Blog

How we build for marketplaces.

Guides you can reuse for Amazon Ads API, SP-API integrations, dayparting automations, and more.

Current focus

Amazon Ads API setup + automation patterns

Amazon Ads API Rate Limits Explained (And How to Stop Hitting Them)

Amazon Ads API

7 min read

Amazon Ads API Rate Limits Explained (And How to Stop Hitting Them)

A 429 storm from the Amazon Ads API almost always means your retry logic is wrong, not that your limits are too low. Here's how the per-endpoint token buckets actually work, what the response headers tell you, and the request patterns that keep you comfortably under the limit.

The SP-API Reports Pattern Everyone Gets Wrong (Async, Step by Step)

Amazon SP-API

8 min read

The SP-API Reports Pattern Everyone Gets Wrong (Async, Step by Step)

The SP-API Reports API is asynchronous — request, poll, download, decompress — and most broken integrations either treat it like a synchronous call or poll it straight into a throttle. Here's the correct four-step flow, the status states that trip people up, and the gzip gotcha at the end.

Custom PPC Automation vs Pacvue & Perpetua: an Honest Comparison

Amazon Ads API

7 min read

Custom PPC Automation vs Pacvue & Perpetua: an Honest Comparison

I build custom Amazon PPC automation for a living and I still tell most people to buy the SaaS. Here's a straight comparison of custom builds versus tools like Pacvue and Perpetua — what each does better, the real cost math, and how to tell which side of the line you're actually on.

Amazon Vendor Central API: What 1P Vendors Can Actually Automate

Amazon SP-API

7 min read

Amazon Vendor Central API: What 1P Vendors Can Actually Automate

Vendor Central (1P) has a real API surface through the SP-API vendor family — retail analytics, purchase orders, shipments, invoices, and direct fulfillment. Here's what's genuinely automatable, what still isn't, and where the fastest wins are for a 1P vendor.

Amazon Data in BigQuery vs Snowflake: Which Warehouse for Sellers?

Data pipelines

7 min read

Amazon Data in BigQuery vs Snowflake: Which Warehouse for Sellers?

Both BigQuery and Snowflake will happily hold your Amazon SP-API and Ads data — the right pick comes down to your existing stack, your query patterns, and the cost model. Here's a practical comparison aimed at Amazon sellers and agencies, not data engineers.

The Hidden Costs of Amazon Marketing Stream (AWS Bill Breakdown)

Data pipelines

6 min read

The Hidden Costs of Amazon Marketing Stream (AWS Bill Breakdown)

Amazon Marketing Stream is free from Amazon's side — but it delivers into your AWS account, and that bill is real. Here's every line item Marketing Stream touches, realistic monthly ranges, and the handful of settings that keep it cheap.

Amazon SP-API 403 Unauthorized: Every Cause and How to Fix It

Amazon SP-API

8 min read

Amazon SP-API 403 Unauthorized: Every Cause and How to Fix It

A 403 "Access to requested resource is denied" from the SP-API almost never means your credentials are wrong — it usually means a role, a token, a region, or an authorization is mismatched. Here are the eight causes that produce a 403, in the order worth checking them, with the exact fix for each.

How Much Does a Custom Amazon Dashboard Cost? (Real Numbers)

Data pipelines

7 min read

How Much Does a Custom Amazon Dashboard Cost? (Real Numbers)

"How much for a custom Amazon dashboard?" has a real answer, not just "it depends." Here's what actually drives the price — data sources, refresh frequency, and hosting — with honest ranges for a simple report, a full ads-plus-retail control room, and everything in between, plus when a $30/month SaaS beats building at all.

AMS vs AMC: Which Amazon Ad Data Tool to Use, and When

Amazon Ads API

6 min read

AMS vs AMC: Which Amazon Ad Data Tool to Use, and When

Amazon Marketing Stream and Amazon Marketing Cloud both start with “Amazon Marketing” and both deal with ad data — so they get mixed up constantly. They actually solve opposite problems. One pushes you hourly data for real-time action; the other runs SQL over years of history for attribution. Here's the difference, side by side, and how to pick.

Storing Amazon Marketing Stream Data in BigQuery: S3 → GCP Transfer Setup

Data pipelines

11 min read

Storing Amazon Marketing Stream Data in BigQuery: S3 → GCP Transfer Setup

You've got a year of hourly Marketing Stream data piling up in S3. Nobody on the PPC team can query a raw S3 bucket. This walkthrough moves it into BigQuery automatically with the BigQuery Data Transfer Service, models it into something clean, and pipes it out to Google Sheets — no manual exports.

Amazon Solution Provider Portal (SPP) Setup: Full Guide for Developers (2026)

Amazon SP-API

10 min read

Amazon Solution Provider Portal (SPP) Setup: Full Guide for Developers (2026)

Before you can build an SP-API app that other sellers authorize, you need a verified developer profile in Amazon's Solution Provider Portal. This is the full 2026 walkthrough: developer registration and verification, registering your app, LWA credentials, roles, redirect URIs, and getting a seller to authorize you.

Amazon Marketing Stream Setup: Hourly Ad Data via Firehose in Python

Amazon Ads API

13 min read

Amazon Marketing Stream Setup: Hourly Ad Data via Firehose in Python

Stop polling the Reports API. Amazon Marketing Stream pushes hourly Sponsored Products, Sponsored Brands, and Sponsored Display data directly into your AWS infrastructure — no cron jobs, no throttling. Here's the full setup: Firehose stream, IAM roles, the subscription API call, and what the data looks like when it lands.

Amazon SP-API Restricted Data Token (RDT) — How to Pull Buyer PII Legally

Amazon SP-API

11 min read

Amazon SP-API Restricted Data Token (RDT) — How to Pull Buyer PII Legally

Your getOrders call returns the buyer name as null. That's not a bug — it's PII protection. Here's the full Restricted Data Token flow: roles, app-level gates, the dataElements gotcha, and a working Python demo that pulls real buyer name + shipping address.

How to Get Amazon Ads API Access as a Direct Advertiser (2026)

Amazon Ads API

10 min read

How to Get Amazon Ads API Access as a Direct Advertiser (2026)

Amazon Ads API access is a Login with Amazon security profile, a Direct Advertiser application, and one approval link that assigns the access to that profile. Then you add a return URL, swap an authorization code for tokens and call /v2/profiles. Amazon says review can take up to one business day; the step that goes wrong is the approval link, which Amazon invalidates if it's opened while you're logged into the wrong Amazon account. Current as of October 2026, including the new 365-day refresh token rule.

How to Get Amazon SP-API Access for Your Own Seller Account (2026)

Amazon SP-API

10 min read

How to Get Amazon SP-API Access for Your Own Seller Account (2026)

For your own seller account you don't need a public app or an OAuth website: register as a private developer in Solution Provider Portal, create an app, and click Authorize app to get the refresh token. As of October 2026 the slow parts are identity verification and the developer-profile review, which Amazon says typically takes one to two weeks for standard roles. Here is every step, the first API call, the errors people hit, and the way back if Amazon rejects you over the Data Protection Policy.

How to Build an Hourly Amazon Vendor RRA Pipeline (SP-API → GCP → BigQuery)

Data pipelines

10 min read

How to Build an Hourly Amazon Vendor RRA Pipeline (SP-API → GCP → BigQuery)

A complete guide to pulling Amazon Vendor Retail Reporting Analytics (RRA) data hourly using SP-API, scheduling on GCP, storing in BigQuery, and visualizing in Looker Studio or custom dashboards.

How to Build Hourly Automated Bidding with Amazon Marketing Stream (AMS → BigQuery → Ads API)

Amazon Ads API

12 min read

How to Build Hourly Automated Bidding with Amazon Marketing Stream (AMS → BigQuery → Ads API)

A complete guide to pulling hourly conversion data from Amazon Marketing Stream (AMS), storing it in BigQuery, and automatically adjusting bids via Amazon Ads API based on real-time performance.

Connect an eBay Seller Account over OAuth (Keyset, RuName, getOrders)

Marketplace APIs

11 min read

Connect an eBay Seller Account over OAuth (Keyset, RuName, getOrders)

Wiring one eBay seller into a custom app end to end: the production keyset, why redirect_uri is the RuName string and not your callback URL, the read-only scopes, token exchange with Basic auth, the ~18-month non-rotating refresh token, and the first getOrders pull.

Amazon vs Etsy vs Walmart vs eBay: Four Marketplace APIs, Four Auth Models

Marketplace APIs

8 min read

Amazon vs Etsy vs Walmart vs eBay: Four Marketplace APIs, Four Auth Models

If you're integrating more than one marketplace, the authentication layer is where your abstraction breaks first. All four use OAuth 2.0 on paper, and no two behave the same way in practice. Here's what actually differs — token lifetimes, rotation, credential ownership — and how those differences should shape your database schema.

Amazon Order IDs Are Not Unique (And It Will Corrupt Your Database)

Amazon SP-API

7 min read

Amazon Order IDs Are Not Unique (And It Will Corrupt Your Database)

If you sync orders for more than one Amazon seller account into one database, a UNIQUE constraint on the order ID is a data-loss bug waiting to happen. An Amazon order ID identifies a buyer's order, not a seller's — two of your own accounts can legitimately receive the same one. Here's how the corruption looks, why it hides for months, and the schema that prevents it.

No Marketplace Gives You a Real Buyer Phone Number (What to Do Instead)

Marketplace APIs

6 min read

No Marketplace Gives You a Real Buyer Phone Number (What to Do Instead)

Your carrier API rejects the shipment because the consignee phone is missing, and the order payload simply doesn't contain one. That's not a bug in your integration — Etsy and Walmart don't return a buyer phone at all, and Amazon's is a relay number. Here's what each marketplace actually gives you and how to satisfy the carrier without inventing data.

The SP-API Deprecation Calendar: What Breaks in 2026 and 2027

Amazon SP-API

7 min read

The SP-API Deprecation Calendar: What Breaks in 2026 and 2027

Amazon has already announced removal dates for two APIs that sit at the centre of most seller integrations — Orders v0 and Finances v0 — plus the old settlement report formats. None of them break today, which is exactly why they get forgotten. Here are the dates, the replacements, and what actually changes in your code.

Amazon Marketing Stream: “Value null at destination.firehoseDestination.subscriberRoleArn”

Amazon Ads API

6 min read

Amazon Marketing Stream: “Value null at destination.firehoseDestination.subscriberRoleArn”

Your Marketing Stream subscription call returns a 400 complaining about a null subscriberRoleArn, and every code sample you can find sends only two ARNs. The subscribe body now needs three. Here's the current shape, the two other things that break right after you fix it, and why your first day of data looks empty.

One Egress IP Per Seller Account: Why Multi-Account Marketplace Integrations Need It

Data pipelines

7 min read

One Egress IP Per Seller Account: Why Multi-Account Marketplace Integrations Need It

If you call marketplace APIs for twenty seller accounts from one server, every one of those accounts shares an IP address — and marketplaces treat shared infrastructure as a signal that the accounts are related. Here's why dedicated egress IPs matter, the provisioning traps that silently give you the wrong kind of IP, and how to keep the allocation honest.

DHL India CSB-V: The SOAP API That Returns a Delimited String

Shipping APIs

7 min read

DHL India CSB-V: The SOAP API That Returns a Delimited String

Integrating India's CSB-V commercial export lane means a SOAP service with 142 positional fields, no sandbox, and responses that are delimited strings rather than parseable XML. Here's what CSB-V actually is, the four things about this API that break normal SOAP tooling, and how to test an integration that has no test environment.

Why Your Custom Dashboard Doesn't Match Seller Central

Amazon SP-API

12 min read

Why Your Custom Dashboard Doesn't Match Seller Central

Your order count matches Seller Central exactly but the revenue doesn't. That is almost never a sync bug — it's a definition mismatch. Here are the seven ways marketplace revenue drifts, which SP-API figure maps to which Seller Central figure, and the reconciliation loop that tells you which side is wrong.

Etsy's Rotating OAuth Refresh Token (and the Sync Race It Creates)

Marketplace APIs

8 min read

Etsy's Rotating OAuth Refresh Token (and the Sync Race It Creates)

Your Etsy integration works for weeks, then a shop quietly stops syncing and only a human re-login fixes it. That is the rotating refresh token: Etsy issues a new one on every refresh and kills the old, so a crashed write or two concurrent syncs orphan the shop. Here is the mechanism, the scheduled-vs-manual sync race, and the cache-plus-lock fix.

FedEx Open Ship: The Consolidation API Hiding in the Ship API

Shipping APIs

7 min read

FedEx Open Ship: The Consolidation API Hiding in the Ship API

Consolidating export parcels under one master shipment is often run by hand through a desktop tool, on the assumption that the shipping API can't do it. It can — FedEx's Ship API exposes it as Open Ship. Here's what Open Ship is, the request shape that actually works, and the four things about it the docs gloss over.

There's No API to Read Amazon Buyer-Seller Messages (The Workaround)

Marketplace APIs

9 min read

There's No API to Read Amazon Buyer-Seller Messages (The Workaround)

You went looking for a Selling Partner API endpoint that returns the messages buyers send you, and there isn't one — Amazon's Messaging API only sends. Here's why the read side doesn't exist, and the email-relay ingestion pattern that gets buyer messages into your own app instead, matched to the right order and the right seller account.

Phantom Orders: Your Upsert-Only Sync Never Deletes Anything

Marketplace APIs

7 min read

Phantom Orders: Your Upsert-Only Sync Never Deletes Anything

Marketplace syncs are almost always written as upserts, which means they can create and update rows but can never remove one. When an order disappears upstream — a receipt that starts 404ing, an order that ages out — it lives in your database forever, quietly inflating counts and revenue. Here's how to detect phantoms without deleting real data by mistake.

How to Get Etsy API Access (Open API v3): A Step-by-Step Guide

Marketplace APIs

9 min read

How to Get Etsy API Access (Open API v3): A Step-by-Step Guide

You want to pull your Etsy orders, listings or inventory into your own system. This walks you through the whole thing from nothing: registering an app, the two credentials Etsy gives you, the 5-shop limit nobody warns you about, and the OAuth flow — with the exact errors you will hit and what each one means.

How to Get Walmart Marketplace API Access: A Step-by-Step Guide

Marketplace APIs

7 min read

How to Get Walmart Marketplace API Access: A Step-by-Step Guide

Walmart's API is the easiest of the big marketplaces to get into — no app review, no consent screen, no refresh tokens. But the parts that are different from Amazon and Etsy will cost you an afternoon if nobody tells you first. Here is the whole process, plus the four header rules that make or break every call.

How to Get Amazon Custom Personalisation Text from SP-API

Amazon SP-API

8 min read

How to Get Amazon Custom Personalisation Text from SP-API

A buyer typed an engraving on your Amazon Custom listing and your production team needs those exact characters. The text isn't in getOrders — it's behind a restricted endpoint, inside a ZIP, at the end of an expiring URL. Here's the full retrieval path, plus the payload trap that silently drops half the fields.

Getting Personalisation Text Out of the Etsy API

Marketplace APIs

6 min read

Getting Personalisation Text Out of the Etsy API

Etsy is refreshingly simple here — the buyer's personalisation arrives inline on the receipt, no extra call and no download. The catches are which field to read, why buyers put engraving instructions somewhere else entirely, and a parsing mistake that silently produces blank personalisation for some orders and correct text for others.

Helium 10 Has No Public API — Its MCP Server Is the Only Way In

Claude & MCP

14 min read

Helium 10 Has No Public API — Its MCP Server Is the Only Way In

If you have gone looking for a Helium 10 REST API to pull Cerebro or Magnet data into your own tool, you already know it does not exist. What does exist, since July 2026, is an MCP server — and you can call it straight from your own code, without Claude or ChatGPT anywhere in the loop. Here is the whole thing: discovery, OAuth, the tools, and the two gotchas that cost the most time.

You Can Call an MCP Server Without an LLM (It's Just JSON-RPC)

Claude & MCP

8 min read

You Can Call an MCP Server Without an LLM (It's Just JSON-RPC)

MCP is marketed as the way to give AI assistants access to your tools, so most people assume you need a model to use one. You don't. An MCP server is a JSON-RPC service with a discovery endpoint, and calling it directly is faster, deterministic and free. Here's when to skip the model entirely, when not to, and the whole client in about forty lines.

Amazon Has No Seller Demand-Forecast API — Build Your Own From Velocity

Amazon SP-API

9 min read

Amazon Has No Seller Demand-Forecast API — Build Your Own From Velocity

You want a 30-day demand forecast per SKU so you know what to reorder. There is no SP-API endpoint that gives you one, and the closest thing, the FBA restock report, covers FBA inventory only and gives recommendations rather than a forecast you control. The good news: you already hold the only data that matters — your own order history. Here's a forecast that is responsive without being twitchy, and the reorder maths that follows from it.

Why Amazon Buy Shipping Doesn't Work for Cross-Border Export (And What It Costs You)

Amazon SP-API

8 min read

Why Amazon Buy Shipping Doesn't Work for Cross-Border Export (And What It Costs You)

If you fulfil Amazon orders from India, Turkey or anywhere else shipping internationally to buyers, Amazon's Buy Shipping is not an option — the Merchant Fulfillment API doesn't cover international shipments. That means buying labels directly from carriers, pushing tracking back yourself, and losing the seller protection that comes with Amazon-bought labels. Here's exactly what you give up and how to compensate.

It Works on SQLite and Breaks on Postgres: The GROUP BY Trap

Data pipelines

7 min read

It Works on SQLite and Breaks on Postgres: The GROUP BY Trap

Your aggregate query passes every local test, you deploy, and Postgres rejects it with "column must appear in the GROUP BY clause" — pointing at a column that is very obviously in the GROUP BY clause. This is a real difference between the two engines, and with an ORM there's a specific way to trigger it that looks completely correct. Here's the mechanism and the one-line fix.

DHL's Hybrid API: Mother-Baby Consolidation That Actually Has an API

Shipping APIs

7 min read

DHL's Hybrid API: Mother-Baby Consolidation That Actually Has an API

Consolidating many parcels under one master airway bill is standard practice for export, and with most carriers it means a desktop app and manual data entry. DHL India exposes it as a real SOAP operation — one call carrying a General block, a Mother, and an array of Babies. Here's how the structure works, and the gate you should keep it behind until you've seen a live response.

Automating Amazon's Request a Review Button with the Solicitations API

Amazon SP-API

9 min read

Automating Amazon's Request a Review Button with the Solicitations API

The Request a Review button in Seller Central has an API behind it, and it is the only compliant way to ask for reviews at scale. The catch is a role you almost certainly don't have, a delivery window you can't detect from the order status, and a 403 that actually means success. Here's the whole thing.

Amazon Ads Dayparting: Schedule Bid Rules Only Raise Bids, So You Build the Rest

Amazon Ads API

8 min read

Amazon Ads Dayparting: Schedule Bid Rules Only Raise Bids, So You Build the Rest

You want campaigns to bid harder at 7pm and go quiet at 3am. The Amazon Ads API's only native schedules are Sponsored Products schedule bid rules and schedule-based budget rules, and both can only raise bids or budgets. Going quiet at 3am, pausing, and reacting to each hour's numbers is something you implement, not something you configure. Here's the shape that works, and the guardrails that stop an hourly writer from doing real damage.

Writing Amazon Listing Copy From Product Photos with Claude Vision

Claude & MCP

8 min read

Writing Amazon Listing Copy From Product Photos with Claude Vision

Most AI listing tools start from a title and a few keywords, which means they describe a product nobody has looked at. Sending the actual product photographs to a vision model changes the output — it can see the material, the finish, the scale and what's in the shot. Here's the pipeline, the compliance gate that has to sit after it, and the parts that still need a human.

FedEx ETD: Sending the Commercial Invoice with the Shipment, Not in a Pouch

Shipping APIs

8 min read

FedEx ETD: Sending the Commercial Invoice with the Shipment, Not in a Pouch

Electronic Trade Documents let you attach the commercial invoice to a FedEx shipment digitally instead of printing three copies into a plastic wallet. It also moves a class of customs delay from the warehouse into your code. Here's where ETD sits in the Ship API request, what customs actually needs from you, and the document fields that get shipments held.

DHL India: Booking Pickups and Getting Rate Quotes Over SOAP

Shipping APIs

6 min read

DHL India: Booking Pickups and Getting Rate Quotes Over SOAP

Once you can create a CSB-V label, two smaller operations turn it into a workable daily process: a rate quote that books nothing, and a pickup request that gets a courier to the door. Both are worth wiring early — the quote because it is the only safe way to exercise a live API, and the pickup because otherwise someone is on the phone every afternoon.

Why Your Shopify Custom App Won't Install on a Client's Store

Marketplace APIs

12 min read

Why Your Shopify Custom App Won't Install on a Client's Store

Your Shopify app installs fine on your own store, then returns a bare HTTP 500 on a client's. The cause is that apps created in a merchant Dev Dashboard organization can only install inside that organization — and the fix, custom distribution from a Partner org, quietly means one app per store. Here is the full failure sequence, the dead ends, and what it does to your schema.

How to Get Shopify API Access: A Step-by-Step Guide (2026)

Marketplace APIs

10 min read

How to Get Shopify API Access: A Step-by-Step Guide (2026)

Connecting to the Shopify Admin API changed twice in 2026, and most guides still describe the removed route. Here is the whole process as it works now — Partner organization, app, scopes, custom distribution, install link, first GraphQL call — plus the two limits that decide what you can actually pull.

Amazon Data Kiosk netProceeds Is Not Profit (Cost of Goods Is Missing)

Amazon SP-API

9 min read

Amazon Data Kiosk netProceeds Is Not Profit (Cost of Goods Is Missing)

Data Kiosk's economics dataset returns netProceeds populated on every row and costOfGoodsSold null on every row. Net proceeds is net sales minus fees minus ad spend, and nothing else. Here is the exact formula, how to verify it against your own account, and why Sponsored Products spend arrives without an Ads API call.

Connect Claude to Amazon Ads and Seller Central (MCP Setup)

Claude & MCP

12 min read

Connect Claude to Amazon Ads and Seller Central (MCP Setup)

Amazon runs two MCP servers — one for Ads, one for the Selling Partner API — that let Claude query your accounts directly. The built-in connector flow fails with '400 Bad Request: An unknown scope was requested'. Here are the setup steps that work, then why the connector is broken and what the connection costs you in context.

Setting Up Amazon Marketing Stream V2: By Hand, or By AI

Amazon Ads API

8 min read

Setting Up Amazon Marketing Stream V2: By Hand, or By AI

Two routes to the same pipeline. Paste one prompt into Claude or ChatGPT and have it do the whole thing with your values already in it, or walk the six steps yourself and understand each one. Either way the same four traps decide whether you end up with data or with a subscription that says ACTIVE and delivers nothing.

Amazon Marketing Stream V2: What Changes If You Built on V1

Amazon Ads API

10 min read

Amazon Marketing Stream V2: What Changes If You Built on V1

Amazon made Marketing Stream V2 generally available on 30 September 2026 and set a hard shutoff for V1: 30 June 2027. V2 isn't a new endpoint on the old pipe. It writes Parquet to an S3 bucket you own, sends restated totals instead of deltas, and delivers 70 days of history when you subscribe. Here's what that changes in a V1 Firehose or SQS pipeline feeding BigQuery, and the order I'd cut one over in.

Best Amazon PPC Software in 2026 and 2027: 22 Tools Compared

Amazon Ads API

17 min read

Best Amazon PPC Software in 2026 and 2027: 22 Tools Compared

Twenty-one Amazon PPC tools and Amazon's own Ads Agent, compared on how they bid, what they really cost at $20,000 a month in ad spend, and twelve features from dayparting to hourly re-bidding. Prices come from each vendor's own page, checked in October 2026, followed by six questions to ask before you choose a tool for 2027.