Skip to main content

Partner Promotions Construct

This OOB blueprint CX construct is an end-to-end customer experience ideal for 3P Partners providing gift/coupon URLs for Prime members to redeem exclusive online offers such as online subscriptions or online transactions, and does not require Prime members to link their Amazon and 3P accounts for offer redemption.

This experience or workflow includes Amazon-owned and 3P Partner-owned pages. Features include Prime member status verification for the 3P offer on Amazon-owned pages and does not allow for verification on 3P-owned pages.

This construct does not involve tech integration from 3P Partner but requires support for gift/coupon URLs management for tracking and reporting.

Promo Code Upload Guide

As we know Partner Promotions Construct is an API-less integration construct, where clients just need to provide promo codes (aka, claim codes) to Prime team. In this CX, Prime Customers receive a unique 3P provided promotion URL for a Prime member exclusive offer on Amazon landing page and redeem the promo code on 3P domain.

Below are the high-level instructions for uploading promo codes for your promotion (including LTO promotions).

One-Time Setup

Pre-requisite: An AWS account (Please refer to create an AWS account, if you don’t have one created)

  1. Create an IAM Role/User in your AWS account (Please refer to create an IAM Role/User)

    • (suggested name: <YourClientName>-PromoCodesUpload-Role) and share the ARN with us.
  2. Add the permissions we'll provide (scoped to your specific bucket and folder paths). (Please refer to add permissions to an IAM Role/User)

Environments

EnvironmentPurpose
Devo (Testing)Validate file format and pipeline
ProdLive customer-facing codes
caution

Please complete the full flow in Devo first. Once we confirm codes are processed correctly, we'll enable Prod access.

File Format

  • Format: CSV, no header row, two columns: <promo_code>,<status>
  • Encoding: Plain UTF-8 (no BOM)
  • File naming (date/time in UTC):
    • New codes: <ClientName>_new_codes_YYYYMMDD_HHMM.csv
    • Redeemed codes: <ClientName>_redeemed_codes_YYYYMMDD_HHMM.csv

New Codes Upload

Upload new promo codes to make them available for customers. Status must be new for all rows.

Example (clientname_new_codes_20260515_1400.csv):

PROMO-CODE-001,new
PROMO-CODE-002,new
PROMO-CODE-003,new

Redeemed Codes Upload

Upload redeemed codes to confirm which codes were redeemed on your platform. This should contain only the diff of codes redeemed since your last upload — not a cumulative list. Status must be redeemed for all rows.

Example (clientname_redeemed_codes_20260522_1400.csv):

PROMO-CODE-001,redeemed
PROMO-CODE-003,redeemed

Upload Structure

Your codes will be uploaded to an S3 bucket organized by client, marketplace, offer type, and promotion ID:

s3://<bucket>/new-promo-codes/clientname=<ClientName>/marketplace=<Marketplace>/offertype=<OfferType>/promotionid=<PromotionId>/
s3://<bucket>/redeemed-promo-codes/clientname=<ClientName>/marketplace=<Marketplace>/offertype=<OfferType>/promotionid=<PromotionId>/

We will provide the inputs for bucket, ClientName, Marketplace, OfferType, and PromotionId.

Troubleshooting

In case of any issues while uploading the promo codes:

  • Check if you have signed in to the correct AWS account
  • Check if you have signed in with the correct IAM Role/User
  • Check if the IAM Role/User has the required permissions
  • Reach out to your Amazon Prime POC with details of the error you are facing

Partner Metrics Reporting Guide

For some promotions, the 3P Partner shares aggregate offer-performance metrics with Amazon for reporting.

Permissions

Metrics upload reuses the same IAM role you created in One-Time Setup — no new role or AWS account is needed. That role's promo-code permissions are scoped to the new-promo-codes/ and redeemed-promo-codes/ prefixes only, so they do not cover partner-metrics/. A one-time permission update is required:

  1. Amazon side: we add a bucket-policy grant allowing your role to write to your partner-metrics/ prefix.
  2. Your side: attach the IAM policy below to your <ClientName>-PromoCodesUpload-Role (s3:PutObject + s3:ListBucket, scoped to your partner-metrics/ prefix). We will provide the exact <bucket>, <ClientName>, <Marketplace>, <OfferType>, and <PromotionId> values.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PrimePartnerMetricsUpload",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<bucket>/partner-metrics/clientname=<ClientName>/marketplace=<Marketplace>/offertype=<OfferType>/promotionid=<PromotionId>/*"
},
{
"Sid": "PrimePartnerMetricsList",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<bucket>",
"Condition": { "StringLike": { "s3:prefix": "partner-metrics/clientname=<ClientName>/marketplace=<Marketplace>/offertype=<OfferType>/promotionid=<PromotionId>/*" } }
}
]
}

No object ACL is required — the bucket is configured so that Amazon automatically owns uploaded objects.

Metrics

Upload a daily CSV of aggregate metrics:

ColumnTypeDescription
activity_dateDate (YYYY-MM-DD)The day the metrics apply to
customers_using_offerInteger (≥ 0)Number of unique customers who used the offer on this date
cs_contactsInteger (≥ 0)Number of customer service contacts related to the offer on this date
offer_value_spentDecimal (≥ 0)Total monetary value of the offer redeemed on this date, in the offer's local currency
number_offer_redemptionsInteger (≥ 0)Number of times the offer was redeemed on this date
note

Do not include a currency column. offer_value_spent is in the offer's local currency; the currency is recorded separately as currency_code, derived from the offer's marketplace (e.g. US → USD).

File Format

  • Format: CSV with a header row matching the column names above
  • Column order: columns must appear in the exact order listed in the table above — uploading them in a different order causes parsing errors
  • Encoding: Plain UTF-8 (no BOM)
  • Frequency: one file per day

Example (partner_metrics_20260622.csv):

activity_date,customers_using_offer,cs_contacts,offer_value_spent,number_offer_redemptions
2026-06-22,1500,12,4250.00,1320

Upload Structure

Metrics files are uploaded to an S3 bucket organized by client, marketplace, offer type, promotion ID, and day:

s3://<bucket>/partner-metrics/clientname=<ClientName>/marketplace=<Marketplace>/offertype=<OfferType>/promotionid=<PromotionId>/batch_day=<YYYY-MM-DD>/<file>.csv

We will provide the inputs for bucket, ClientName, Marketplace, OfferType, and PromotionId.