Skip to main content
With a tag manager, one tag or rule loads the pixel on every page. Your existing event tags then call it, the same way they call your other marketing pixels. Read Web Pixel first for what each call sends. Two settings matter in a tag manager:
  • autoPage: false. Your page-view tag sends page views. Without this, the pixel also sends one when it loads, and you get two.
  • No spa option. Send sequen("page", …) from a tag on every page load and every route change instead.

Load the pixel

  1. Create a rule named Sequen – load.
  2. Event: Core → Library Loaded (Page Top). Give it the lowest Order of your rules, so sequen exists before any other rule calls it.
  3. Action: Core → Custom Code, language JavaScript:
Replace products with the name of your catalog table, and Session ID and Customer ID with the names of your own data elements. Or drop those two options to let the pixel keep its own ids.
Then add a page-view tag or rule that fires on every page and route change:
Fill page_type and item_id from your data layer. In Google Tag Manager, wrap each call in <script> tags in a Custom HTML tag.

Send events

Each event tag or rule gets one sequen(…) call, filled from your data layer. Most can start as copies of tags you already have: copy the tag, keep its trigger and variables, and swap the call.
If your developers can add data-sqn-* attributes to product grids and tiles, the pixel records impressions and clicks itself, with no tags. Impressions from markup are also more accurate: they count only products that were actually in view. See Impressions and clicks.
Use markup or tags for each kind of event, not both. If your tiles carry data-sqn-* markup and tags also send view_item_list, select_item or add_to_cart, every impression, click or add to cart is sent twice, with different event_ids, and nothing removes the duplicates. To send those events only from tags, leave the markup out or set autocapture: false in init.

From a GA4 ecommerce data layer

If your site already pushes GA4 ecommerce events to the data layer, map them like this: GA4’s index starts at 0, and Sequen’s rank starts at 1. For example, a Google Tag Manager tag on the view_item_list event, with a Data Layer Variable DLV - ecommerce for ecommerce:

From the Meta or TikTok pixel

Field changes:
  • Item ids. Meta’s content_ids, or the content_id of each entry in TikTok’s contents, become item_ids. When there is only one, as on ViewContent and AddToWishlist, send it as item_id instead.
  • Items. Each entry in contents becomes an entry in items, with item_id, quantity and price.
  • Revenue. value becomes revenue. Add order_id.
  • Customer id. TikTok’s ttq.identify({ external_id }) becomes userId in the load tag, or sequen("identify", id). Send the raw customer id, not a hash, and never an email address or phone number.
  • Consent. Meta’s fbq("consent", "revoke" / "grant") and TikTok’s holdConsent / grantConsent / revokeConsent become consent: "pending" in init, then sequen("consent", "granted") or sequen("consent", "denied").
  • Cookies. TikTok’s ttq.disableCookie() becomes cookies: false in init.

Test

Add debug: true to the init options, for example only in your tag manager’s development environment, and follow Test, then go live.