Ads IQ is the tab in your Shopflo dashboard that connects your checkout to your Meta advertising stack. Because Shopflo sits inside your checkout, it can see things your website pixel never can: how the shopper paid, whether they are a first-time buyer, whether they used a coupon, and exactly where they dropped off. Ads IQ takes that checkout depth and turns it into a per-campaign funnel, an event-health view, and control over which signals Meta gets to learn from.
Why it matters: browser pixels miss a meaningful share of conversions by design (iOS restrictions, cookieless browsers, ad blockers). Shopflo sends events server-side from inside the checkout, so those orders still reach Meta, and by checkout it already holds name, email, phone and address, which gives its events far higher match quality than a browser pixel event can carry.
Capability | What you get |
Ads-to-order funnel | Every step from session to completed order, broken down by campaign, on last-click attribution. |
Event health and EMQ | Events Shopflo fired against events Meta received, per event type, with Meta's Event Match Quality score. |
Custom events control | Choose which checkout signals get sent to Meta, from the dashboard, with no developer involvement. |
Before you begin
You will need admin access to your Shopflo dashboard, a Meta Business account with admin rights on the ad account and the pixel or dataset you want to use, and at least one pixel already created on that Meta Business account.
You do not need to change anything on your storefront, your theme, or your existing Meta setup. Ads IQ does not require a new script, a new tag, or a developer.
Step 1: Connect your Meta account
Open your Shopflo dashboard and go to the Ads IQ tab.
Click Connect Meta. You will be redirected to Meta's own login and consent screen.
Log in with the Meta account that has admin rights on your ad account. This is Meta's screen, not Shopflo's; your password is never seen or stored by Shopflo.
Review the permissions Meta lists and approve. Shopflo requests the minimum set needed to read your ad performance, read and write event data against your pixel, and manage audiences. Ads IQ cannot create ads, change budgets, edit campaigns, or spend money on your account.
You will land back on the Ads IQ tab.
If the connection fails: the two common causes are logging in with a personal Meta account that has no admin rights on the ad account, or a Business Manager role that is Analyst rather than Admin. Fix the role in Meta Business Settings and try again.
Step 2: Select your pixel
After the login completes, Ads IQ shows every pixel attached to your Meta Business account.
Select the pixel you want Shopflo events to go to.
If you run more than one pixel (for example, separate pixels per brand or per campaign objective) you can select more than one. This becomes the default destination for all events.
Save the configuration.
The connection status badge at the top of the tab now reads Connected, with a last-synced timestamp. If your Meta token ever expires, the badge changes and prompts you to re-authenticate. Re-authenticating does not reset your event configuration.
No pixels showing up? Your Meta account has no pixel or dataset created yet. Create one in Meta Events Manager first, then return to Ads IQ and refresh.
Step 3: Your existing integration stays as it is
This is the part worth reading twice. If you already connected Meta through the Integrations tab on your Shopflo dashboard, leave it alone. Do not delete it before connecting Ads IQ, and do not worry that adding the same pixel in Ads IQ will inflate your numbers.
Why there is no duplication. Shopflo sends the same event ID on every event it fires, on both the browser side and the server side. Meta deduplicates on that event ID: when it sees two events carrying the same ID and the same event name, it keeps one and discards the other. This is Meta's own designed behaviour for exactly this situation, and it is why a pixel configured in both the Integrations tab and the Ads IQ tab still produces one clean count.
What to do, in order:
Connect Ads IQ. Leave the Integrations tab connection running.
Wait a few hours, then open the Events Health view and confirm your events are landing.
Once you are satisfied, switch off the older Meta integration on the Integrations tab.
From then on, Ads IQ is your single Meta connection, and every control and diagnostic lives in one place.
There is no deadline on step 3 and nothing breaks if you never do it. But Ads IQ is where custom event configuration, pixel routing, EMQ and the funnel all live, so running everything through it is the cleaner end state.
Step 4: Read the ads-to-order funnel
The funnel view answers one question: which campaign actually produced orders, and where did the rest of the traffic leak out. You can filter by pixel and ad-account combination (multi-select) and by date range.
Column | Source | What it tells you |
Overall conversion rate | Computed | Sessions that became orders |
Sessions | Shopflo | Visits to your store attributed to that campaign |
Product page views | Shopflo | Reached a PDP |
Add to carts | Shopflo | Added something |
Checkouts initiated | Shopflo | Entered checkout |
Address submitted | Shopflo | Cleared the address step |
Payment method selected | Shopflo | Reached the payment screen |
Order completed | Shopflo | Paid or confirmed COD |
Attribution model: last click. A session, and any order that comes out of it, is credited to the last campaign the shopper clicked before that session began. One session, one campaign, no splitting and no double counting.
This is why your Ads IQ numbers will not tie out exactly to Meta Ads Manager. Meta's default reporting also credits view-through conversions and uses multi-day click windows, so one order can be attributed to a campaign in Meta that Ads IQ credits elsewhere. Neither number is wrong. Meta answers "which campaign influenced this purchase". Ads IQ answers "which campaign brought this session to my store and what happened next". Use Ads IQ for funnel diagnosis and relative comparison between campaigns, and Meta Ads Manager for the decisions you make inside Meta's own model.
How to actually use this view:
A campaign with plenty of sessions and few product page views is a landing-page or creative mismatch, not an audience problem.
A campaign with healthy add-to-carts and a collapse at address submitted is a checkout-friction or shipping problem, not an audience problem.
A campaign with a good conversion rate but a heavy COD skew is not as profitable as its ROAS suggests. Compare campaigns on order quality, not just order count.
Step 5: Check event health and EMQ
The Events Health view shows the integrity of the pipe between Shopflo and Meta. For each event type you see the successful events sent by Shopflo (counted server-side), the total event count on Meta (from Meta's own stats), the trend over the selected period, and the Event Match Quality score (from Meta's diagnostics).
Standard events, always visible: View Content, Add to Cart, Checkout Initiated, Add Payment Info, Purchase. Custom events become visible once you have enabled at least one.
How to read the two counts:
Meta count higher than Shopflo count. Expected. Something other than Shopflo is also sending that event to the same pixel, usually a leftover pixel snippet in your Shopify theme or another app. Audit the pixels on your store. Not harmful, but it makes your numbers harder to trust.
Meta count lower than Shopflo count. A small gap is normal, from deduplication and Meta's processing delay. A sustained gap of more than about 15 percent against your 30-day average is worth raising with us.
A count that falls off a cliff. Usually a token expiry or a pixel configuration change. Check the connection badge first.
What EMQ is. Meta scores every event from 0 to 10 on how confidently it could match that event to a real Meta user. Higher match quality means better optimisation and less wasted spend, because Meta's model learns from events it can actually attribute to a person. Shopflo has a structural advantage here: by checkout it already holds name, email, phone and address, so its server-side events carry far more matchable identifiers than a browser pixel event ever can. If an EMQ score is blank, Meta did not have enough volume on that event to compute one (low-traffic custom events will often show blank). This is not an error.
Step 6: Configure custom events
This is the control plane, and it is where most of the ROAS upside sits. When someone buys, the standard Purchase event tells Meta exactly one thing: a purchase happened. It does not say whether they paid by UPI or chose COD, whether this was their first ever order, or whether they needed a coupon to convert. That missing context costs you money: your acquisition campaign cannot tell whether it is genuinely acquiring new customers or re-buying people you already own, and your prepaid and COD buyers, with completely different RTO and working-capital profiles, look identical to Meta's optimiser. Custom events fix that by naming the difference.
What you can turn on
Event | Fires when | Typical use |
Prepaid Purchase | Order paid via UPI, card, netbanking or wallet | Run a campaign optimised purely for prepaid buyers, who carry lower RTO risk |
COD Purchase | Order placed on Cash on Delivery | See what your COD acquisition actually costs, and bid it down separately |
New Customer Purchase | Buyer's first ever order on your store | Point acquisition campaigns here instead of Purchase, so Meta stops re-buying existing customers |
Repeat Customer Purchase | Buyer has ordered before | Exclude from acquisition, or use as a seed for high-LTV lookalikes |
Purchase with Discount | Order placed with a coupon or discount applied | Separate deal seekers from full-price buyers for margin analysis |
Coupon Applied | Coupon successfully applied at checkout, pre-purchase | High-intent mid-funnel signal |
Coupon Failed | Coupon attempted but rejected | Diagnose whether failed coupons are costing you conversions |
Payment Initiated | Shopper tapped Pay Now | Strongest pre-purchase intent signal you have, ideal lookalike seed |
Payment Failed | Payment attempted and failed (bank decline, UPI timeout) | Retarget shoppers who tried to buy and could not. These convert at high rates |
Payment Method Selected | Shopper picked a payment method | Understand payment preference by campaign |
Each event is off by default and toggled on individually. Turning one on requires no code change and no deploy: Shopflo reads the configuration at runtime.
Pixel routing
If you run multiple pixels, you can assign a specific pixel per event type, overriding the default you chose at setup. Useful when one Shopify store serves two brands, or when you want purchase events on one pixel and funnel events on another. The interface shows clearly which rows are using an override and which are on the setup default.
Event preview
Every event has a preview that shows the exact payload Meta will receive. Use this before you build a custom conversion in Meta Ads Manager, so you know which parameters and values are available to write rules against.
Making the events usable inside Meta
Enabling an event in Shopflo sends it. To optimise campaigns on it, register it in Meta:
Enable the event in Ads IQ and wait for the first events to land. Confirm in Events Health.
In Meta Events Manager, go to Custom Conversions and click Create.
Select your pixel or dataset, choose Custom Event, and pick the Shopflo event from the dropdown. It only appears once Meta has received at least one instance of it.
Set the conversion category (for example, Purchase for the purchase-type events) and add value rules if you want.
The custom conversion is now selectable as a campaign optimisation objective.
Putting these events to work in Advantage+ campaigns
This is where custom events stop being a reporting nicety and start changing what Meta buys for you. Advantage+ hands almost every lever to Meta's model: targeting, placement, creative combination, budget split. The one lever you keep is what you tell it to count as a win. Point it at the generic Purchase event and Meta will faithfully find you the cheapest purchases available, which in India usually means discount-hunting, COD-heavy, already-existing customers. It is doing exactly what you asked; you just asked for the wrong thing.
Play 1: Acquisition that actually acquires
Set the conversion event to New Customer Purchase instead of Purchase. Left on Purchase, an Advantage+ campaign will spend your acquisition budget re-buying customers who would have ordered anyway, because a repeat buyer is the cheapest conversion in the auction. Switch to New Customer Purchase and a repeat buyer no longer registers as a success, so the model reallocates toward people who look like your genuine first-time buyers. Expect your reported ROAS on this campaign to drop when you make the switch. That is the point: you are no longer taking credit for orders you already owned. Judge it on new-customer cost, not blended ROAS. (Meta also offers a Customer lifecycle control at the ad-set level on manual Sales campaigns, which decides who Meta is allowed to show ads to; the event decides what Meta counts as a win. They work well together.)
Play 2: Stop buying orders that come back
Set the conversion event to Prepaid Purchase. A COD order and a prepaid order are the same conversion to Meta and very different outcomes to you. On a generic Purchase objective, Meta will find COD buyers because they convert more easily, and a meaningful share of those will RTO. Optimising on Prepaid Purchase points the model at people who put money down at checkout. It is the closest thing to an RTO filter you can apply before the order exists rather than after, and it is usually the single highest-impact switch for Indian D2C brands, because nothing outside the checkout knows the payment method at the moment the event fires.
Play 3: Protect margin from discount dependence
Use Purchase with Discount as a diagnostic, not usually as an objective. Run it alongside your standard Purchase event and watch the ratio per campaign. A campaign where nearly every order carries a coupon is not acquiring brand demand, it is buying a promotion, and its true ROAS is lower than the dashboard says once you net off the discount. If the split is bad, the fix is upstream in creative and offer, not in the bidding. You can also build a Website Custom Audience from the Purchase with Discount event and exclude it from full-price campaigns.
Play 4: Turn near misses into a retargeting pool
Payment Failed and Payment Initiated are the highest-intent signals in your funnel. A shopper who tapped Pay Now and hit a bank decline or a UPI timeout wanted to buy, and they are invisible to a standard pixel setup because the failure happens inside checkout. In Meta, build a Website Custom Audience from the Payment Failed event and run a short-window retargeting campaign against it, ideally with a nudge or small incentive; recovery rates here are typically far above ordinary cart-abandonment retargeting. Payment Initiated works as a lookalike seed: a larger pool than Purchase and closer to intent than Add to Cart.
Before you switch anything
Check you have the volume. Meta needs roughly 50 conversions per week on an event before its optimiser learns reliably. If you do 600 orders a month and 60 percent are prepaid, Prepaid Purchase gives about 360 a month (roughly 85 a week), comfortably above the threshold. At 150 orders a month, splitting across a narrower event will starve the learning phase. Below the bar, use custom events for reporting and audience building and leave your campaign objective on Purchase.
Do not change the objective on a campaign that is working. Changing the conversion event resets the learning phase. Launch a parallel campaign on the new event, let both run, and compare on the metric you care about rather than on reported ROAS.
Give it two weeks. The first days after a switch look worse while the model re-learns. Judging it on day three is how good changes get reverted.
Mind Meta's limits. An ad account is capped at 100 custom conversions in total. Pick the two or three that map to a decision you are actually going to make.
A suggested first week
Day | Do this |
Day 1 | Connect Meta, select your pixel, leave the Integrations tab connection running. |
Day 2 | Check Events Health. Confirm events are landing and note your baseline EMQ per event. |
Day 3 | Enable two custom events. For most brands, start with New Customer Purchase and Prepaid Purchase. |
Day 4 | Register both as custom conversions in Meta Events Manager. |
Day 7 | Open the funnel view. Find your worst-converting campaign and identify which step it loses people at. |
Week 2 | Once events are confirmed healthy, switch off the older Meta integration on the Integrations tab. |
Related Articles
Need help?
Reach out to us at support@shopflo.com and we'll be happy to assist. For an event-delivery or attribution question, include your pixel ID and the date range you are looking at so we can trace it immediately.






