Meta Pixel Integration with Landing Page
Hi everyone, I am selling an online course via a landing page which has been built on Framer and there are 3 plans available for the user to choose from. The 3 enroll now buttons under each plan have simply been linked to 3 different Razorpay payment pages.
Now the question is that what is the best way to track conversions, should there be a single pixel or multiple pixels ?
Also Razorpay provides the option to integrate meta pixel with its payment pages so should I integrate a different pixel with each Razorpay payment page or is there some other work around for this ?
Can someone please help with this ?
The short answer is:
You absolutely should use a single Pixel (or Dataset) for all three course plans.
Using multiple Pixels for the same business, product, and audience will fragment your data, making Meta’s algorithm less efficient at finding the right customers for you.
The best way to track conversions and differentiate between your three plans is to fire a single Purchase
standard event, but pass a different content_id
or a custom parameter for each plan as part of the event data.
Integrating the Pixel directly into Razorpay’s payment pages is prone to failure and is the older, less reliable method.
The most robust solution is to use the Meta Conversions API to send successful transaction data directly from Razorpay’s server to Meta’s system.
The long answer is:
The best practice is always to use one Pixel per distinct business, which applies in your case since all three plans are for the same course and the same target audience.
Meta’s ad delivery system relies on a large, consolidated pool of event data to train its algorithm, and splitting your Purchase
events across multiple Pixels dilutes this valuable data, resulting in worse ad performance and higher costs.
Instead of splitting Pixels, you use event parameters to differentiate the conversions.
When a user clicks “Enroll Now” and successfully completes payment for one of your plans, the ideal tracking setup would fire a single Purchase
event to your one Pixel.
However, you would include an extra parameter with the event, such as plan_name
or value, to specify which course they bought.
For example, for the basic plan, the event would include plan_name
: basic, and for the premium plan, it would include plan_name
: premium.
This allows the algorithm to learn from all purchases while still letting you create custom conversions and reports to see which plan is selling best.
Your challenge is that your payment flow is leaving your Framer landing page and going to a third-party domain (Razorpay’s hosted payment page).
The issue with relying on Razorpay’s built-in Pixel integration or setting up a simple Pixel on a final thank you page is that this method is highly susceptible to being blocked by ad blockers, cookie restrictions, and browser privacy settings, which will cause under-reporting of sales.
Additionally, Razorpay’s pages are hosted on a different domain, which often complicates cross-domain tracking unless explicitly configured correctly, making it hard to link the user’s initial ad click to the final purchase.
This is why the Meta Conversions API is the modern and necessary solution.
Instead of relying on the user’s browser, the Conversions API sends the conversion data directly from your server or Razorpay’s server to Meta’s server.
While Razorpay offers basic Pixel integration, a custom or advanced server-side setup gives you much more control and accuracy.
The best way to achieve a highly reliable and traceable connection for a setup like yours is to use the Razorpay API to securely notify a server-side solution whenever a payment is successfully processed.
This process would involve using webhooks from the Razorpay API to notify a Server-Side Google Tag Manager container hosted on a solution like Stape or Google Cloud Platform.
Stape is often a cheaper and easier-to-manage solution than a full cloud setup.
Once your server-side container receives the confirmed payment data directly from Razorpay’s server, it constructs a perfect, unblockable Purchase
event, complete with the plan name and customer identifiers (like hashed email and phone number), and sends it to Meta via the Conversions API.
This ensures that every successful, validated sale is recorded, the correct plan is attributed, and Meta receives the high-quality data it needs to optimize your ads effectively.