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)
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.
- (suggested name:
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
| Environment | Purpose |
|---|---|
| Devo (Testing) | Validate file format and pipeline |
| Prod | Live customer-facing codes |
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:
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:
- Amazon side: we add a bucket-policy grant allowing your role to write to your
partner-metrics/prefix. - Your side: attach the IAM policy below to your
<ClientName>-PromoCodesUpload-Role(s3:PutObject+s3:ListBucket, scoped to yourpartner-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:
| Column | Type | Description |
|---|---|---|
activity_date | Date (YYYY-MM-DD) | The day the metrics apply to |
customers_using_offer | Integer (≥ 0) | Number of unique customers who used the offer on this date |
cs_contacts | Integer (≥ 0) | Number of customer service contacts related to the offer on this date |
offer_value_spent | Decimal (≥ 0) | Total monetary value of the offer redeemed on this date, in the offer's local currency |
number_offer_redemptions | Integer (≥ 0) | Number of times the offer was redeemed on this date |
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.