Pinterest Ads
For Pinterest CAPI - See HERE.
What Is Pinterest Ads?
The Pinterest Ads integration via MetaRouter enables comprehensive tracking of user actions post-interaction with Promoted Pins. MetaRouter collects and enriches web event data, incorporating key user information and managing first-party cookies to ensure accurate tracking. This data is transmitted to Pinterest's conversion tracking endpoints through unauthenticated GET requests, allowing for precise attribution and audience targeting. This integration helps measure return on ad spend (RoAS) and build targeted audiences, enhancing the effectiveness of your Pinterest advertising campaigns.
What are the benefits of integrating MetaRouter with Pinterest Ads?
- Automated Cookie Management: Automatically grabs and stores relevant Pinterest tag cookies, ensuring accurate user tracking and data consistency.
- Data Enrichment: MetaRouter enriches event data with crucial user information, enhancing tracking accuracy.
Capabilities and Considerations
- MetaRouter solves identity for the Pinterest Ads integration by grabbing the
pin_unauth
,epik
, andderived_epik
cookies via the sync injector via a GET request. In addition, MetaRouter also passes the user agent for matching. Though IP is not required, it will be essential for geo-reporting.pin_unauth
- A first-party cookie placed by the Pinterest tag when we are unable to match the user. It contains a unique UUID to group actions across pages.epik
- A query parameter found in the URL when a person visits a page from a Pinterest ad. When someone clicks on a Pinterest ad, information is added to the URL to help the Pinterest tag find a match. The Pinterest tag caches this information in this first-party cookie.derived_epik
- Placed when the Pinterest tag reports a match identified without using cookies, such as through enhanced match. The Pinterest tag caches information to make matching on future pages easier.
- Track user actions post-ad engagement through Pinterest Ads reporting.
- Measure and optimize return on ad spend (RoAS) through Pinterest Ads reporting.
- Create targeted audiences in Pinterest Ads based on user interactions.
Limitations
- Server-side events are sent via HTTP forward uses unauthenticated GET requests.
- This integration is for web events only.
- Pinterest tag will still need to be implemented to grab the the
pin_unauth
andderived_epik
cookies.
Pinterest Ads vs Pinterest CAPI
Pintrest Ads Integration
- Uses unauthenticated GET requests, eliminating the need for complex API authentication processes.
- Uses
pin_unauth
first-party cookie and user agent as the main identifiers. Also usesepik
andderived_epik
as additional identifiers.
**Pinterest CAPI Integration**
- Uses authenticated API requests which Provides enhanced security and verification for data being sent to Pinterest.
- Offers robust mechanisms for handling sensitive user data securely.
- Uses either IP and user agent combo and/or hashed email as identifiers. In addition, you may use the Pinterest CAPI sync to send
epik
andexternal_id
for increased user matching. See more details here.
Getting Started - From Your Pinterest Ads Account
Grant MetaRouter Access to Your Ads Account
- Navigate to Business Access > Partners and click “Add Partner.”
- Enter
1142577505371214964
for the Partner ID and select “Invite this partner to access your ad accounts and tools.” - After seeing the Success message, click “Assign Assets.”
- For each ad account, turn on the “Analyst” permission and click “Assign Permissions.”
- Notify your Customer Success Manager once you have completed these steps.
- Note: The partner connection will appear only after MetaRouter accepts the invitation.
Pixel ID:
- Continuing in Pinterest Business Manager, click on the upper-left drop down menu.
- Click on “Conversions” under the “Business” column.
- On the left-hand navigation, click on “Tag Manager”.
- There is an option to click on “Install the Pinterest tag manually” that will let you view your Tag ID on the upper-right side of the screen. This ID will be used as your Pixel ID in the sync.
Getting Started - From Your MetaRouter Account
Adding a Pinterest Ads integration.
From the integration library, add a Pinterest Ads integration. Then, fill out the Connection Parameters:
Connection Parameter | Description |
---|---|
TAG_ID | Your pixel ID. |
Adding a Pinterest Ads Sync
To gather the pin_unauth
, epik
, and derived_epik
values, you must add a Pinterest Ads sync.
- From the Pipelines page, find the pipeline associated with the web property you’d like to add a sync to. Hover over the three dot dropdown and select “Build AJS File.”
- In the Identity Syncs section, select the Pinterest Ads sync.
- Fill out the following fields:
- Consent Type
- API Timeout (in milliseconds) - default 300 milliseconds
- Cookie Lifetime (in days) - default 365 days
- Retry Interval (in days) - default 7 days
- Scroll down and click the Save and Build File button.
- Deploy your AJS file to propagate changes to your web property.
Event Mappings
MetaRouter provides all of the event mappings that Pinterest Ads integrations typically require. You may add custom events, parameters or mappings in accordance with Pinterest Ad’s API documentation.
Global
Global mappings will be applied to all events. If your parameter names do not match the Expected Inputs provided, you will need to overwrite the Inputs provided with your own.
Output Key | Description | Expected Input |
---|---|---|
noscript | string: Indicates whether the browser supports JavaScript | Enrichment - staticString: "1 " |
tid Required | string: The unique tag ID assigned to the Pinterest tag | Enrichment - staticString: TAG_ID |
cb Required | integer: A cache-busting timestamp to prevent caching of the request | Enrichment - timestamp: seconds |
client_ip Required | string: The IP address of the client | context.ip |
pd[derived_epik] | string: The derived epik parameter from the Pinterest provider | context.providers.pinterest.epik |
ad[loc] Required | string: The URL of the current page | context.page.url |
ad[ref] | string: The referrer URL of the current page | context.page.referrer |
ed[page_url] Required | string: The URL of the current page | context.page.url |
Event Specific
Page Event
Output Key | Description | Expected Input |
---|---|---|
event Required | string: Indicates a page visit event | Enrichment - staticString: pagevisit |
ed[page_name] | string: The name of the page | properties.name |
ed[page_category] | string: The category of the page | properties.category |
Products Searched Event
Output Key | Description | Expected Input |
---|---|---|
event Required | string: Indicates a search event | Enrichment - staticString: search |
ed[search_query] Required | string: The search query used by the user | properties.query |
Product List Viewed Event
Output Key | Description | Expected Input |
---|---|---|
event Required | string: Indicates a product list view event | Enrichment - staticString: viewcategory |
ed[line_items][index][product_id] Required | string: The ID of the product | N/A - Expression |
ed[line_items][index][product_name] Required | string: The name of the product | N/A - Expression |
ed[line_items][index][product_category] Required | string: The category of the product | N/A - Expression |
ed[line_items][index][product_brand] Required | string: The brand of the product | N/A - Expression |
Product Viewed Event
Output Key | Description | Expected Input |
---|---|---|
event Required | string: Indicates a product view event | Enrichment - staticString: pagevisit |
ed[line_items][0][product_id] Required | string: The ID of the viewed product | N/A - Expression |
ed[line_items][0][product_name] Required | string: The name of the viewed product | N/A - Expression |
ed[line_items][0][product_category] Required | string: The category of the viewed product | N/A - Expression |
ed[line_items][0][product_brand] Required | string: The brand of the viewed product | N/A - Expression |
ed[line_items][0][product_price] Required | string: The price of the viewed product | N/A - Expression |
ed[currency] Required | string: The currency of the product price | properties.currency |
Product Added Event
Output Key | Description | Expected Input |
---|---|---|
event Required | string: Indicates an add to cart event | Enrichment - staticString: addtocart |
ed[value] Required | number: The total value of the added product(s) | input |
ed[currency] Required | string: The currency of the product price | properties.currency |
ed[order_quantity] | integer: The quantity of the added product(s) | properties.quantity |
ed[line_items][0][product_id] Required | string: The ID of the added product | N/A - Expression |
ed[line_items][0][product_name] Required | string: The name of the added product | N/A - Expression |
ed[line_items][0][product_category] Required | string: The category of the added product | N/A - Expression |
ed[line_items][0][product_brand] Required | string: The brand of the added product | N/A - Expression |
Cart Viewed Event
Output Key | Description | Expected Input |
---|---|---|
event Required | string: Indicates a cart view event | Enrichment - staticString: pagevisit |
ed[value] Required | number: The total value of the cart | input |
ed[currency] Required | string: The currency of the cart value | properties.currency |
ed[order_quantity] | integer: The total quantity of items in the cart | input |
ed[line_items][index][product_id] Required | string: The ID of the product in the cart | N/A - Expression |
ed[line_items][index][product_name] Required | string: The name of the product in the cart | N/A - Expression |
ed[line_items][index][product_category] Required | string: The category of the product in the cart | N/A - Expression |
ed[line_items][index][product_brand] Required | string: The brand of the product in the cart | N/A - Expression |
Order Completed Event
Output Key | Description | Expected Input |
---|---|---|
event Required | string: Indicates an order completion event | Enrichment - staticString: checkout |
ed[order_id] | string: The ID of the order | properties.order_id |
ed[value] Required | number: The total value of the order | input |
ed[currency] Required | string: The currency of the order | properties.currency |
ed[order_quantity] | integer: The total quantity of items in the order | input |
ed[promo_code] | string: The promo code used in the order | properties.coupon |
ed[line_items][index][product_id] Required | string: The ID of the product in the order | N/A - Expression |
ed[line_items][index][product_name] Required | string: The name of the product in the order | N/A - Expression |
ed[line_items][index][product_category] Required | string: The category of the product in the order | N/A - Expression |
ed[line_items][index][product_brand] Required | string: The brand of the product in the order | N/A - Expression |
Required & Recommended Identifiers
These identifiers must be mapped to Pinterest Ads in order for successful user matching to occur. Without these IDs, any events sent to Pinterest Ads may not be accurately reflected in reporting. For your convenience, required and recommended IDs are mapped as Global parameters to ensure they are added to every event.
Attribute | Example | Sync Injector Required? |
---|---|---|
pin_unauth Required | dWlkPU1EQTRaakkyTldNdE5UTmxZUzAwT1dRd0xXRTRPVGt0WkdRMllqQXpOakV4WlRSaA | Yes |
epik Recommended | EAabc1234 | Yes |
derived_epik Recommended | ABC123456789 | Yes |
ip Recommended | 192.168.1.1 | No |
user agent Required | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 | No |
Additional Identifiers
These identifiers should be mapped to Pinterest Ads whenever possible to ensure the highest user match rates possible. If using these identifiers, they must be added as Global or Event Specific mappings.
Attribute | Description | Example |
---|---|---|
em | Email for https://help.pinterest.com/en/business/article/enhanced-match. SHA-256 hashed. | b58996c504c5638798eb6b511e6f49af12b4e8c5706c8c3a88d2c39f72b5422a |
Additional Pinterest Ads Documentation
Updated 2 days ago