Conversion tracking with GA4, Google Ads, Meta, Reddit and GTM

Activity Messenger can send page views, completed forms and purchases from your forms and microsite to analytics and advertising platforms.

Activity Messenger sends the events and their data. You must also configure the destination platform to use those events in reports, advertising conversions or campaign optimization. Receiving an event does not automatically create a conversion goal in Meta or Google Ads.

What Activity Messenger tracks

  • Page views on forms and microsite pages.
  • Completed forms through the completed_form event.
  • Finalized purchases and revenue through the standard purchase event.

Configure tracking managed by Activity Messenger

  1. Open the menu to the right of your logo.
  2. Select Organization settings, then Social & marketing.
  3. Under E-Commerce conversion tracking, enter the identifiers for the platforms you use.
  4. Save your changes.

The available settings are:

  • Meta Pixel ID (formerly Facebook Pixel).
  • Reddit Pixel ID.
  • Google Ads conversion ID in the AW-XXXXXXXX format and its conversion label.
  • Google Analytics 4 measurement ID in the G-XXXXXXXX format. Universal Analytics IDs beginning with UA- are no longer supported.
  • Domain, when you need to measure a customer journey across your website and Activity Messenger.

You only need to complete the fields for the platforms you use.

Events and data sent

Page views

Activity Messenger can send page views from public forms and microsite pages. Organization, domain, iframe and cookie-consent context is included in the data layer.

completed_form

This event is sent when a client completes a form. It contains:

  • completed_form_id
  • completed_form_name

purchase

This event is sent when a purchase is finalized and the client reaches the Activity Messenger confirmation experience. It contains:

  • transaction_id
  • currency
  • value
  • tax
  • items, including item ID, name, category, quantity and price

Example:

{
  "event": "purchase",
  "ecommerce": {
    "transaction_id": "ABC123",
    "currency": "CAD",
    "value": 125.00,
    "tax": 14.97,
    "items": []
  }
}

The stable transaction ID allows analytics platforms to identify and deduplicate a purchase. Configure conversions from the purchase event rather than relying only on a confirmation-page URL.

Use your own Google Tag Manager container

Some organizations can enter their own GTM-XXXXXXXX container ID. When a custom GTM container is specified, Activity Messenger does not trigger the managed Meta, Reddit, Google Ads and GA4 tags. Your organization becomes responsible for:

  • Creating and publishing all tags in GTM.
  • Creating triggers for purchase and completed_form.
  • Managing cookie consent.
  • Excluding administrators when is_user_logged_in is true.
  • Testing the container before launching a campaign.

Configure conversions in Meta and Google

Seeing an event in Meta Test Events, Google Analytics Realtime or DebugView, or GTM Preview confirms that the platform received the event. It does not automatically make the event an advertising conversion.

  • Meta: Make sure the Pixel or Dataset is connected to the correct business and ad account. Then select or configure the received Purchase event for the campaign you want to optimize.
  • Google Ads: Create a website conversion action, then copy its AW- conversion ID and conversion label into Activity Messenger.
  • GA4: Verify the purchase event in Realtime or DebugView. Standard reports can take additional time to populate.

Embedded forms and microsites

When an Activity Messenger form, calendar or microsite is embedded on another website, it runs inside an iframe. There are two ways to make conversion tracking work.

Option 1 — Let Activity Messenger handle tracking (recommended)

  1. In Activity Messenger, open Organization settings and select Social & marketing.
  2. Enter your GA4, Google Ads, Meta or Reddit identifiers under E-Commerce conversion tracking.
  3. Embed the form, calendar or microsite on your website as usual.
  4. Test the complete journey inside the embedded content, including the Activity Messenger confirmation step.

The managed tag runs inside the iframe and sends the completed_form and purchase events directly to the configured platform. A tag installed only on the parent website is not required for this setup.

Avoid configuring the same purchase tag both in Activity Messenger and on the parent website. Doing so can create duplicate page views or conversions.

Option 2 — Send events to the parent website's GTM container

Use this setup when the GTM container on your website must control all analytics and advertising tags. Iframe data-layer forwarding must first be enabled for your organization by Activity Messenger, and the permitted website origin must be registered. The Domain field alone does not enable forwarding.

  1. Contact Activity Messenger support and provide the URL of the website containing the iframe. Ask for iframe data-layer forwarding to the parent website.
  2. Add the listener below to the parent page before, or at the same time as, the iframe is loaded.
  3. In the parent GTM container, create Custom Event triggers named purchase and completed_form.
  4. Connect your GA4, Google Ads, Meta or Reddit tags to those triggers.
  5. Test with GTM Preview, complete the embedded form or purchase, and then publish the container.

Example listener for the parent website:

<script>
window.dataLayer = window.dataLayer || [];

window.addEventListener("message", function (event) {
  if (event.origin !== "https://activitymessenger.com") return;
  if (!event.data || event.data.type !== "dataLayer") return;

  var payload = event.data.payload;

  if (typeof payload === "string") {
    try {
      payload = JSON.parse(payload);
    } catch (error) {
      return;
    }
  }

  if (!Array.isArray(payload)) return;

  payload.forEach(function (item) {
    window.dataLayer.push(item);
  });
});
</script>

Keep the origin validation in the example. It prevents another website from sending untrusted events to your data layer.

If the parent GTM container fires the analytics and advertising tags, leave the equivalent managed tracking IDs blank in Activity Messenger to avoid duplicate conversions. Cookie consent must also be enforced by the parent website before its optional tags are fired.

Cookie consent and testing

  • Test in a private or incognito window so you are not recognized as a logged-in administrator.
  • If a cookie banner is enabled, accept optional cookies before testing.
  • Temporarily disable ad blockers or browser privacy extensions.
  • Complete the form or purchase all the way to the Activity Messenger confirmation experience.
  • Verify the event in the platform's diagnostic view before checking standard reports.
  • If you use your own GTM container, confirm that it is published and that its event triggers are active.

Troubleshooting

I see the purchase in Meta Test Events, but I cannot select it in my campaign

This confirms that Activity Messenger sent the event and Meta received it. Check that the Pixel or Dataset is connected to the correct ad account, that you have permission to use it and that the Purchase event is configured for the campaign.

My form is embedded and my website tag does not see the purchase

The purchase occurs inside the Activity Messenger iframe. Configure the tracking identifier in Activity Messenger. Contact support if you need to forward events to a container on the parent website.

Can I track revenue instead of only counting purchases?

Yes. The purchase event includes the transaction value, currency, tax and item details. The destination platform can report revenue once its ecommerce or conversion reporting is configured.

No events appear

Check the identifier, cookie consent, ad blockers, administrator status and confirmation step. For a custom GTM container, also check that the container is published and that triggers listen for purchase and completed_form.

If you still need help, visit the Get support page and include the form or microsite URL, the platform you are testing, whether the page is embedded and a screenshot of the diagnostic view.