Connect Meta (Facebook and Instagram) to your Shopify store
By the HonestTag team ยท Published October 16, 2026
HonestTag sends each verified Shopify order to Meta from its server through the Meta Conversions API, so Facebook and Instagram ads can be measured and optimized on real orders. You connect it by signing in with Facebook on the Meta card, choosing your ad account and pixel, and answering one question about Shopify's own Facebook & Instagram channel, which decides whether HonestTag also sends Meta's standard Purchase event. This page lists what you need, the steps, what is sent and read, and how to check it works.
What you need
- A Meta ad account and a pixel (dataset). Meta's Conversions API guide says: "If you've already set up a Pixel for your website, use the same Pixel ID for your browser and server events." The card asks for the Pixel (dataset) ID, found in Meta Events Manager > Data sources > your pixel > Settings.
- A Facebook login that can reach both. The sign-in asks Meta for two permissions,
ads_readandbusiness_management. HonestTag refuses a login that grants no Ads permission, because it can neither send purchases nor read spend. - Or a system-user token. If you would rather not sign in, the card's Use a system-user token instead link takes a token from Meta Business settings that includes Ads Read (or Ads Management). The card lists the steps: add a system user, assign it your ad account and your dataset, add an app, generate the token and check ads_read.
- A paid HonestTag plan for delivery. The free Mirror never sends anything to Meta. You can connect on the Mirror, and HonestTag checks the pixel and starts sending when you choose a paid plan. See pricing.
Connect Meta, step by step
- Check your Facebook & Instagram channel. In your Shopify admin, go to Sales channels > Facebook & Instagram, click Settings, then Data sharing settings, and note which level is chosen: Standard, Enhanced or Maximum. The Meta card asks about it.
- Sign in with Facebook. In the HonestTag app, go to Setup and click Connect Meta on the Meta card. If Facebook asks which Businesses to share, choose the one that owns your ad account, and keep Ads Read checked.
- Choose the ad account and pixel. Pick your ad account from the list, and paste your Pixel (dataset) ID from Meta Events Manager. The ad account is optional for sending purchases; HonestTag needs it to read spend.
- Answer the data-sharing question and save. Answer whether Shopify's Facebook & Instagram channel is sharing data at Enhanced or Maximum, then click Save settings. On a paid plan HonestTag sends Meta one test event to confirm the pixel.
- Set up the four purchase goals. In Meta Events Manager, create a custom conversion for each HonestTag event as it appears, using the names the card lists, with Purchase as the standard event for optimization.
A sign-in token lasts about 60 days, which matches Meta's own description of a long-lived token ("A long-lived token generally lasts about 60 days."). HonestTag renews it automatically each night before it expires. Meta issues system-user tokens either non-expiring or valid for 60 days, so check which kind you pasted. When you save with Meta connected on a paid plan, HonestTag sends one test event, named HonestTag_SetupCheck, to the pixel with the stored token. On the free plan it waits and sends that test when you choose a paid plan. If Meta refuses the test on a paid-plan save, the settings are still saved and the card shows Meta's reason so you can fix the pixel ID or the token's access. If it fails when you move to a paid plan, the failure is recorded for your store rather than shown on that save. Meta says events sent with a test code "are not dropped. They flow into Events Manager and are used for targeting and ads measurement purposes", so you may see that one event in your dataset.
The four purchase goals in Meta
For each order it sends (see which orders are sent), HonestTag sends custom events to your pixel:
HonestTag_Purchase: every order.HonestTag_Purchase_NC: new customers.HonestTag_Purchase_RC: returning customers.HonestTag_Purchase_FCNC: new customers whose first recorded ad click was on Meta. See first-click attribution.
To optimize a campaign on one of them, make it a custom conversion. In Meta Events Manager, click Custom Conversions in the top-left menu, then Create custom conversion. Enter the name the card shows (for example HonestTag_Purchase_NC), choose your dataset as the data source and the event with the same name as the conversion event. Meta's help says that for a custom event "the option to Choose a standard event for optimization appears"; choose Purchase. Leave the rules empty and click Create. Meta notes "You can only select an event that you've already set up on your website", so HonestTag_Purchase_NC and HonestTag_Purchase_FCNC appear after the first new-customer order of their kind, and HonestTag_Purchase_RC after the first returning-customer order. Meta allows up to 100 custom conversions per ad account.
On a paid plan, when the Meta credential you connected, Facebook login or system-user token, includes the Ads Management permission, HonestTag creates the four custom conversions in your ad account when you save the pixel, or uses ones already there with the same name, and lists each with its ID and status. Meta has not yet approved that permission for the HonestTag app, so most stores create them by hand with the steps above. HonestTag never changes a custom conversion you made. Which goal to bid on is explained in the HonestTag conversion actions.
What HonestTag sends to Meta
For each eligible order HonestTag sends one request to your pixel's Conversions API endpoint. It holds:
- The goal events above, each with its own event ID derived from the order, the same on every retry.
HonestTag_Purchaseis sent for every order HonestTag sends to Meta. - Meta's standard
Purchaseevent, only when your answer on the card turns it on (see the next section). - Order details: action source
website, the order time, the page URL the order landed on (or your storefront address when there is none), the order value and currency, your Shopify order ID, up to 10 products (product ID, quantity and unit price), the order's discount code when it has one, and its total discount when that is above zero. The value is your order total minus tax, the same number HonestTag sends Google; Shopify's own channel sends the total with tax included, so values read lower by the tax if you switch. - Matching data: SHA-256 hashes of the buyer's email, phone, first and last name, city, state, zip and country, normalized the way Meta specifies (for email: "Trim any leading and trailing spaces. Convert all characters to lowercase."); Meta says "Phone numbers must include a country code to be used for matching", so a phone is sent as digits with its country code and no plus sign, and is left out when the buyer's country is unknown. The external ID is HonestTag's random visitor ID, not hashed; when an order has no visitor ID it is a SHA-256 hash of the Shopify customer ID instead, or the hashed email when there is neither. Also not hashed: the Meta click ID (
fbc) and browser ID (fbp) when HonestTag's pixel recorded them, and the IP address and user agent Shopify recorded on the order.
For buyers in US states with their own privacy laws, such as California, events carry Meta's Limited Data Use flag. HonestTag does not send Meta a website order more than 7 days old, the limit Meta's event time rule sets. If Meta reports accepting only part of a batch, the order's proof says so and HonestTag does not resend it, because Meta's answer does not say which events it accepted. A batch Meta reports accepting none of is retried. Consent rules are the same as for every destination and are on the server-side delivery page. A bundle is sent as one product.
The card's optional switch Also send browse events (AddToCart, InitiateCheckout, AddPaymentInfo) is off by default. When on, HonestTag also sends those steps with no order value. Each needs Meta's own click or browser ID (fbc or fbp) and always carries the visitor ID, plus the IP address and user agent when the browser's request includes them. Email and phone are never sent with them. Leave it off if a pixel in your theme already sends them.
What HonestTag reads, and what it never touches
- Reads (with an ad account chosen): daily spend, clicks and impressions for the ad account and each campaign, plus the purchases and purchase value in Meta's Insights reporting for the same days, and the account's time zone. HonestTag does not pass your ad account's attribution setting with that read. Spend appears in The Gap next to your Shopify orders, and the Meta card shows Meta's figures.
- Writes: purchase events to your pixel and, only on a paid plan with a Meta credential that includes Ads Management, the four custom conversions.
- Never touches: campaigns, ad sets, ads, budgets or audiences, and never edits a custom conversion you made.
Avoid counting a purchase twice
Meta pairs a browser Pixel event with a Conversions API event when their event name and ID match. HonestTag's event ID is computed on its server, so no browser pixel and no other app can send the same one. Meta also documents matching on fbp and external_id, with two limits. Meta says of it: "Generally, it only works for deduplicating events sent first from the browser and then through the server." It also "Does not deduplicate events when only using one event source", and "If you send us two consecutive server events with the same information, we do not discard either."
That is why the card asks about Shopify's Facebook & Instagram channel. Shopify says that at Enhanced, "your store uses Facebook's Conversions API as well as the Meta pixel", and that "The Conversions API sends the purchase event between Shopify and Facebook servers." Maximum also uses the Conversions API. So:
- Enhanced or Maximum: HonestTag keeps its standard Purchase off. Meta keeps receiving the channel's Purchase, and HonestTag's four goal events.
- Off, Standard or not installed: HonestTag sends the standard Purchase as well. Shopify says Standard means "a Meta pixel collects data from customer browsing behavior in your online store", so a browser Purchase can still arrive from the channel's pixel.
The HonestTag_Purchase events carry their own names, so they cannot collide with any other tool's Purchase and are sent whatever you answer. The duplicate purchase events guide shows how to find every purchase source on a store.
Refunds, edits and which orders are sent
- Refunds: HonestTag sends Meta no refund or retraction event. The refund is recorded in the order's proof as "refund recorded; HonestTag sends Meta no refund or retraction event".
- Order edits and upsells: Meta keeps the value sent at purchase time.
- Which orders: orders from your online store are sent. Point of sale orders and subscription renewals are kept out by default and are never sent as a website purchase. On a store where HonestTag has turned them on for Meta, a point of sale order goes as
physical_storeand a renewal assystem_generated, and only once your Meta dataset takes offline events. Orders from other apps and sales channels are kept out unless you switch them on. The details are in which orders are sent.
How to check it works
- On the card. After you save, the Meta card shows the pixel, the ad account, whether browse events are on and whether the standard Purchase is on.
- In HonestTag order proof. After the next online order, open it in the HonestTag app. The proof shows Meta as the platform, the delivery status, the event ID and which events were sent, for example
HonestTag_PurchaseandHonestTag_Purchase_NC. - In Meta Events Manager. The HonestTag events appear in your dataset as orders arrive. Meta's help says to "check the custom conversions tab in Events Manager to see if it worked (status is active)." Meta's Test Events tool, under Events Manager > Data Sources > your pixel > Test Events, works by sending the test ID it generates "as a
test_event_codeparameter", and HonestTag's order events do not carry one.
Error messages and what to do
- "the Meta login granted no Ads permission. Reconnect and keep Ads Read checked". The Facebook dialog let you uncheck the permission. Connect again and leave it checked.
- "paste the system-user access token exactly as Meta shows it". The pasted token was empty or had a space or line break in it.
- "the stored system-user token lacks ads_read". Generate a new system-user token that includes Ads Read (or Ads Management) and paste it again.
- "Pixel ID must be the numeric dataset ID from Meta Events Manager." Copy the ID from Events Manager > Data sources > your pixel > Settings.
- "Saved, but Meta did not accept a test event for pixel ...". The settings are saved, but the pixel ID is wrong or the connected login cannot reach that pixel. Meta's reason follows in the message.
- "Answer "Is Shopify's Facebook & Instagram channel sharing data at Enhanced or Maximum?" before saving." The first save needs that answer.
- "HonestTag could not set up ... of the 4 Meta custom conversions". Meta refused one or more; its reason is listed. Create those in Events Manager with the steps on the card, or use Set up again.
- Reconnect needed. Meta reports the stored token is no longer valid, or it has lost its Ads permission. Click Reconnect Meta on the card.
Disconnecting
Disconnect from the Meta card, or uninstall the app. Delivery and spend reads stop at once and the stored token is deleted. Everything already measured stays, per the published retention schedule. Custom conversions in your ad account stay there. Moving from another tracking app is covered in switching apps.
Frequently asked questions
How do I set up the Meta Conversions API on Shopify without a developer?
Install HonestTag, open the Meta card on the Setup page and click Connect Meta. You sign in with Facebook, choose your ad account, paste your pixel (dataset) ID and answer one question about Shopify's Facebook & Instagram channel. HonestTag then sends each eligible online store order to Meta from its server. There is no code to add to your theme.
Will Meta count my purchases twice if I also use Shopify's Facebook & Instagram channel?
HonestTag's four events have their own names, HonestTag_Purchase and its _NC, _RC and _FCNC variants, so they never collide with the channel's Purchase. The standard Purchase event is the one that can double count. The two copies carry different event IDs, and Meta says its other matching method does not discard two consecutive server events with the same information, so while the channel shares at Enhanced or Maximum, which sends Purchase through the Conversions API, HonestTag keeps its own standard Purchase off.
Which event should my Meta campaigns optimize on?
Create a custom conversion from the HonestTag event you want and choose it as the campaign's performance goal. HonestTag's suggestion: HonestTag_Purchase_FCNC for prospecting (HonestTag_Purchase_NC if FCNC volume is too low), HonestTag_Purchase_NC for retargeting and catalog campaigns, HonestTag_Purchase_RC for retention. Set only one as the goal of a campaign, because one new-customer order reaches several of them.
Does HonestTag create the custom conversions for me?
Only on a paid plan, when the Meta credential you connected, Facebook login or system-user token, includes the Ads Management permission. Meta has not yet approved that permission for the HonestTag app. Otherwise the card lists what to enter and you create them in Events Manager. Meta offers an event there only after it has received one, so the new-customer and returning-customer goals appear after the first order of each kind.
Does HonestTag send refunds to Meta?
No. HonestTag sends Meta no refund or retraction event. The refund is recorded in the order's proof in the HonestTag app instead.
What does HonestTag read from my Meta ad account?
With an ad account chosen, it reads daily spend, clicks and impressions, plus the purchases and purchase value in Meta's Insights reporting, for the account and each campaign. It never changes a campaign, ad set, ad, budget or audience.
Related: every HonestTag integration, server-side delivery, first-click attribution, which decides the FCNC goal, and first-party tracking.