Compare commits
3
Commits
17367024c2
...
b5f8ddbaaa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5f8ddbaaa | ||
|
|
6dbaf99b29 | ||
|
|
cdd3f9c77e |
@@ -46,11 +46,13 @@ export default async function LocaleLayout({
|
||||
|
||||
return (
|
||||
<>
|
||||
<OpenPanelComponent
|
||||
clientId={process.env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID || ""}
|
||||
trackScreenViews={true}
|
||||
trackOutgoingLinks={true}
|
||||
/>
|
||||
<OpenPanelComponent
|
||||
clientId={process.env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID || ""}
|
||||
trackScreenViews={true}
|
||||
trackOutgoingLinks={true}
|
||||
apiUrl="https://op.nodecrew.me/api"
|
||||
scriptUrl="https://op.nodecrew.me/op1.js"
|
||||
/>
|
||||
<NextIntlClientProvider messages={messages}>
|
||||
{children}
|
||||
</NextIntlClientProvider>
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import { createRouteHandler } from "@openpanel/nextjs/server";
|
||||
|
||||
export const { GET, POST } = createRouteHandler({
|
||||
apiUrl: "https://op.nodecrew.me/api",
|
||||
});
|
||||
@@ -5,10 +5,18 @@ import { OrderConfirmation } from "@/emails/OrderConfirmation";
|
||||
import { OrderShipped } from "@/emails/OrderShipped";
|
||||
import { OrderCancelled } from "@/emails/OrderCancelled";
|
||||
import { OrderPaid } from "@/emails/OrderPaid";
|
||||
import { OpenPanel } from "@openpanel/nextjs";
|
||||
|
||||
const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL || "https://dev.manoonoils.com";
|
||||
const DASHBOARD_URL = process.env.DASHBOARD_URL || "https://dashboard.manoonoils.com";
|
||||
|
||||
// Initialize OpenPanel for server-side tracking
|
||||
const op = new OpenPanel({
|
||||
clientId: process.env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID || "",
|
||||
clientSecret: process.env.OPENPANEL_CLIENT_SECRET || "",
|
||||
apiUrl: process.env.OPENPANEL_API_URL || "https://op.nodecrew.me/api",
|
||||
});
|
||||
|
||||
interface SaleorWebhookHeaders {
|
||||
"saleor-event": string;
|
||||
"saleor-domain": string;
|
||||
@@ -274,6 +282,23 @@ async function handleOrderConfirmed(order: SaleorOrder, eventType: string) {
|
||||
});
|
||||
}
|
||||
|
||||
// Track order in OpenPanel
|
||||
op.track("order_received", {
|
||||
order_id: order.id,
|
||||
order_number: order.number,
|
||||
total: order.total.gross.amount,
|
||||
currency: order.total.gross.currency,
|
||||
item_count: order.lines.reduce((sum, line) => sum + line.quantity, 0),
|
||||
customer_email: customerEmail,
|
||||
event_type: eventType,
|
||||
});
|
||||
|
||||
// Track revenue
|
||||
op.track("revenue", {
|
||||
amount: order.total.gross.amount,
|
||||
currency: order.total.gross.currency,
|
||||
});
|
||||
|
||||
// Always send admin notification for both ORDER_CREATED and ORDER_CONFIRMED
|
||||
await sendEmailToAdmin({
|
||||
subject: `🎉 New Order #${order.number} - ${formatPrice(order.total.gross.amount, currency)}`,
|
||||
|
||||
Reference in New Issue
Block a user