Help Center
How can we help? 👋

Sending Events via Shopify App (for Shopify stores)

No code needed!

Shopify Integration

Track page views and purchases with our Shopify app. No need to deal with JavaScript tags. Complete the integration in just a few clicks!

Once you install the Shopify app, all you need to do is enter your Advertiser ID and User ID and select enable s2s tracking.

Here is what that looks like:

Notion image
Why Enable Server-to-Server (S2S) Tracking?

S2S tracking unlocks more granular event tracking, including data that may have been missed due to ad blockers, cookie consent denial, or browser restrictions. It also enables offline and Amazon purchase tracking when those stores are connected to Shopify.

Here is how to find your Advertiser ID and User ID:

Notion image
 

On this page, you can see your advertiser and user ID, which is what you will need to enter into the Shopify app from your web tag:

Notion image

If you don’t have your custom web tag guide, you can either a) pull one from your dash or b) ask someone with access to Podscribe for it.

To pull your web tag guide from the dash:

  1. Hover over to Tag Setup on the left-hand side of the page and click on Generate New Tag:
    1. Notion image
  1. Type in the name of the advertiser you need tags for. If there are multiple results, pick the one that seems most legitimate. Usually, the right advertiser has a logo and the simplest name:
    1. Notion image

      Feel free to email adops@podscribe.com if there are multiple advertisers that should be merged or of an advertiser needs a logo.

  1. Click on Preview to open the tag page:
    1. Notion image

Map events to Podscribe events.

Once events come into the Tag Setup tab, the last step is to select which Podscribe event your event should be mapped to and turn on attribution for it. Click on the dropdown field under Mapped To, then select which event it should be mapped to. Standard events like purchase will be auto-mapped to Purchase on the dash. But a more custom event like af_purchase will need to be manually mapped to Purchase before it shows up on your dashboard.

We include the ability to map incoming events to Offline Purchases, allowing you to distinguish between standard Purchase events (normal online transactions) and in-store or external purchases, such as those synced from Amazon or other connected sources. This helps ensure your event data remains properly categorized and easy to analyze within Podscribe.

Notion image

If attribution is turned on without being mapped to an event, the event won’t show up on the dashboard but it will in CSVs downloaded. You can also map multiple events to the same dashboard event to combine them on the dash.

 

Here’s how to confirm all is correct with the integration.

 

Questions?

What pages can I use certain event tags on?

You can use the “signup”, “lead”, or “purchase” events on any page you’d like. For example, if you wanted to measure how many exposed listeners visited a Sign-up page, you could fire the “signup” event on page view. Then, once they completed the form, you could fire the Lead event, passing us the hashed email. We recommend placing the “visit” tag on all pages.

How to update existing Shopify Integration to take advantage of the new s2s tracking?

If you’re already using the Podscribe Shopify app and want to enable the new server-to-server (S2S) tracking functionality, simply open the Podscribe app from your Shopify admin. You’ll see a pop-up prompting you to update, just click Update to enable enhanced tracking.

This update unlocks more granular event tracking, including data that may have been missed due to ad blockers, cookie consent denial, or browser restrictions. It also enables offline and Amazon purchase tracking when those stores are connected to Shopify.

Can I use custom event names? I want to create and track other events besides installs, view, signups, leads, and purchases.

Yes! If the primary 5 events are not adequate, we can track custom, additional events. We can also support re-naming the standard event names on our dashboard to names you're more familiar with, such as "Account Creation". To do so, you would simply change the name of the action in your javascript tag from "purchase" or "view" to the custom event name you'd like:

Notion image
Instead of loading the script bundle, can we call a 1x1 image pixel, or pass events server-side, or in batch?

Yes - please see this guide.

How do I know which advertiser to pick? There are many that pop up with the name of the advertiser.

Podscribe regularly removes duplicate advertisers, but here are some steps that you can take to ensure you're selecting the right advertiser.

  1. Look up the different advertisers with the same name on Podscribe.
    1. Notion image
      Notion image
  1. Check all of the advertisers one by one. If the logo and website are correct, then that advertiser is likely the correct one.
    1. Notion image

      Select the name displayed on the advertiser page as the advertiser’s name when creating your campaign:

      Notion image

      If you can’t find the advertiser you’re looking for, feel free to reach out to adops@podscribe.com.

What is the Content Security Policy (CSP) for the Podscribe web tag?
Content-Security-Policy:

default-src
self

script-src
d34r8q7sht0t9k.cloudfront.net

connect-src
verifi.podscribe.com
verifi.pdscrb.com
pixel.tapad.com
ipv4.podscribe.com
ipv4.pdscrb.com
How to integrate using a Shopify Custom Pixel, instead of the Shopify app, for Shopify stores?

See here for general info on Shopify Custom Pixels, and below for the Podscribe code.

👆

Be sure to replace YOUR_USER_ID and YOUR_ADVERTISER_ID with your IDs.

(function (w, d) {
    var id = 'podscribe-capture',
        n = 'script';
    var e = d.createElement(n);
    e.type = 'text/javascript';
    e.id = id;
    e.async = true;
    e.src = 'https://d34r8q7sht0t9k.cloudfront.net/tag.js';
    var s = d.getElementsByTagName(n)[0];
    s.parentNode.insertBefore(e, s);
    e.onload = onLoad;
})(window, document);

function onLoad() {
    podscribe('init', { user_id: YOUR_USER_ID, advertiser: YOUR_ADVERTISER_ID });

    analytics.subscribe("page_viewed", (event) => {
        window.podscribe('view', { source: "shopify-custom" });
    });

    analytics.subscribe("product_viewed", (event) => {
        window.podscribe('ViewContent', { source: "shopify-custom" });
    });

    analytics.subscribe("search_submitted", (event) => {
        window.podscribe('Search', { source: "shopify-custom" });
    });

    analytics.subscribe("product_added_to_cart", (event) => {
        window.podscribe('AddToCart', {
            currency: event.data?.cartLine?.merchandise?.productVariant?.price?.currencyCode,
            value: event.data?.cartLine?.merchandise?.productVariant?.price.amount,
            source: "shopify-custom"
        });
    });

analytics.subscribe("payment_info_submitted", (event) => {
    window.podscribe('AddPaymentInfo', {source: "shopify-custom"});
});

analytics.subscribe("checkout_started", (event) => {
    window.podscribe('InitiateCheckout', {source: "shopify-custom"});
});

analytics.subscribe("checkout_completed", (event) => {
    try {
        const allDiscountCodes = event.data?.checkout?.discountApplications?.map(
            (discount) => {
                if (discount.type === "DISCOUNT_CODE") {
                    return discount.title;
                }
            }
        );
        discountCode = allDiscountCodes ? allDiscountCodes.filter(Boolean).join(", ") : undefined;
    } catch (e) {
        console.log(e);
    }

    window.podscribe('purchase', {
        value: event.data?.checkout.totalPrice?.amount,
        currency: event.data?.checkout.totalPrice?.currencyCode,
        order_number: event.data?.checkout?.order?.id,
        hashed_email: event.data?.checkout.email,
        num_items_purchased: event.data?.checkout.lineItems?.length,
        source: "shopify-custom",
        discount_code: discountCode
    });
});
}
 
I have a new client! What's the fastest way to get javascript pixels to send them?

It is to generate them from the Tag Setup tab:

Notion image
How important is it to include a hashed email in the pixel? If we do not, what would we lose out on?

Sending us hashed emails lets us find 10-20% more attributed conversions, so it is certainly helpful to have! Here’s further detail on the part that hashed emails play in attribution. If you send us raw emails, we hash them as they come in and only store the hashed ones.

What mobile device partners (MMPs) does Podscribe work with?

Podscribe works with all major MMPs including: Adjust, Appsflyer, Kochava, Singular, Tealium, Branch, and Segment.

What client data & PII does Podscribe collect as part of its measurement methodology, and how?

The only PII Podscribe collects from advertisers are IP addresses. Podscribe never collects real names, addresses, billing details, raw emails, or any medical info. Podscribe only collects & relies upon anonymous digital identifiers, specifically:

  • IP address
  • User agent
  • Device cookie ID
  • Page URL
  • IDFA or GAID for in-app events
  • MD5 or SHA256 hashed email
  • timestamp
  • Purchase Metadata: Order ID, Amount, Discount Code, Product Name, etc

When the pixel on a brand’s site fires, it sends a request to our AWS servers located in the US. We receive incoming requests and store them in an encrypted format in our Kafka system, which is located in a private VPC. These requests have a Time-to-Live (TTL) of 7 days. We store the complete requests securely for a limited period because we are unable to process all the necessary data quickly enough to maintain a live HTTP connection.

If we receive raw emails (not hashed), we hash them upon receipt, and discard any other PII (other than IP address) in case anything was accidentally shared.

We then store the data in AWS data centers in the US, specifically US-east-1 and US-west-1, encrypting sensitive data. The data is destroyed in 5 years, or if no longer commercially useful, or if deletion is requeste

How can I pass my attribution results back to my MMP?

At the moment, this isn't possible. MMPs like Adjust and Appsflyer send Podscribe raw event data for attribution, but the results stay within Podscribe and aren't sent back. As a workaround, you can use the Individual Conversions CSV export or API to access your attributed conversion data.

Did this answer your question?
😞
😐
🤩