GoatLabels GoatLabels
Same cohort. New batch. Every month.

Shipping Patreon rewards without a fulfillment service


Export, validate, buy. Repeat next run.

Patreon gives you the addresses; the shipping is yours. Reward runs are recurring batches: export the patron list, validate every address — they drift between runs — rate-shop each row across four carriers, and buy the batch from one wallet. The cadence is monthly or quarterly, and none of it needs a subscription.

Every row quoted, every address re-checked

Each patron row is validated and priced across USPS, UPS, FedEx, and DHL before the batch buys — because between any two runs, somebody moved.

UPSFedExDHLUSPS per row
Drift caught Validated every run.
Preset reused Mapped once, kept.
All-in prices Four per parcel.

A wallet with no opinion on your cadence

Monthly, quarterly, or annual runs draw on one prepaid balance funded by card, Apple Pay, Google Pay, ACH, or crypto — and the months between runs cost nothing.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
Prepaid balance Spent per row.
No subscription Gaps cost zero.
Row-level ledger Each reward traceable.

A reward run is a recurring batch, not a campaign

Crowdfunding fulfillment and Patreon fulfillment get lumped together, and they should not be. A campaign ships once: one enormous batch, then silence — that shape, and the way backer-survey addresses age between pledge and print, is the Kickstarter page's territory. A Patreon reward run is the opposite animal. It repeats — monthly for some tiers, quarterly for others — and it ships to substantially the same cohort every time. The list is not one frozen snapshot but a living roster: a few patrons join, a few lapse, and the core carries over from run to run.

That repetition changes what the workflow should optimise for. A one-shot batch can afford a slow, careful setup because it never happens again. A recurring batch cannot — whatever the first run cost you in setup, the tenth run should cost almost none of it. The three sections below are the three places the cadence bites: the addresses that silently change between runs, the column mapping you should never have to rebuild, and the returned parcel that is actually your cohort telling you something. Get those three right and a reward run becomes an hour a month, not a weekend.

Address drift between runs, and validating before printing

Between any two runs, some fraction of your cohort moved. People change apartments, leave college towns, or fix a typo in their head and never in their profile — and a patron whose address changed has no reason to remember that your fulfillment depends on it. This is drift: the list decays a little every month, and the decay compounds precisely because the cohort persists. Ship a stale export quarterly for a year and the same wrong address can eat four parcels before anything forces the correction.

The defence is to validate every row on every run, no matter how many times the same rows have validated before. Export the patron list fresh each run — never reuse last quarter's file, because a stale file is drift you chose — and let the batch validator check each address before any label is bought, with a residential or commercial classification on every row. The rows that fail are the drift, caught while it is still a message to a patron rather than a parcel in a returns pipeline. The cost asymmetry is stark: a flagged row costs a moment of attention, while an unflagged bad address costs the item, the postage, and the patron's month of waiting — and the run-over-run cadence multiplies whichever one your workflow chooses.

The saved mapping: why the second run takes minutes

Patreon's export puts patron addresses in its own columns, and those columns have to be paired with shipping fields — name to name, street to street, tier kept as a reference so the right reward goes in the right box. Do that pairing once, on the first run, and save it as a preset. The full mapping-validation-purchase mechanic is the bulk CSV page's to explain; what matters here is what the preset does to a cadence. Run two loads the saved mapping against the fresh export and the setup step simply disappears: export, load preset, validate, quote, buy.

This is the quiet argument for treating recurring fulfillment as a batch discipline rather than a monthly improvisation. The parcels help too — reward runs ship near-identical packages, so a saved parcel preset carries the weight and dimensions across the whole file, and the four-carrier quote runs per row against USPS, UPS, FedEx, and DHL with an all-in price on each. The batch buys row by row from one prepaid wallet, so one flagged address holds back one parcel, never the run. By the third run the entire loop is muscle memory measured in minutes, which is exactly what a task you will do twelve times a year deserves.

Returned parcels as the feedback loop for patron addresses

Even a validated list will occasionally bounce a parcel — validation proves an address exists and is deliverable in form, not that your patron still lives there. On a one-shot campaign a return is pure loss. On a recurring batch it is information: the return names exactly which cohort member's record is stale, in time to fix it before the next run compounds the error. That reframing is the closest thing recurring fulfillment has to a free lunch, and it only works if returns feed corrections — a returned box you reship without updating the patron's record is a box you have scheduled to bounce again next quarter.

So close the loop deliberately. When a reward comes back, message the patron, get the current address, and fix it at the source — their Patreon profile — so every future export inherits the correction, then reship from the wallet. What each carrier does with an undeliverable parcel, and who pays the ride home, is the returned-to-sender page's territory. And if the numbers tempt you toward a fulfillment service instead, run the arithmetic first: with no subscription and no monthly minimum, a hundred-patron quarterly run costs postage four times a year, plus the drift work this page just automated away.

One reward run, start to finish

Export, load the preset, and the run is already half done.

A recurring run is judged by what it costs the tenth time, not the first. This is the loop that gets cheaper with repetition: pull a fresh patron export, load the mapping saved on run one, let every row revalidate whether or not it validated last quarter, quote each row across four carriers, and buy row by row from one prepaid balance.

1
A fresh export, every single run
Never last quarter's file
patron message

hey — I moved in March, can this quarter's print go to the new place?

Shopify
Synced — if the merch shop is yours too
TikTok Shop
Synced — same queue, same wallet
Patreon patron export
Patron name
Mapped once, saved as a preset
Address
Revalidated on every run, no exceptions
Tier
Kept as a reference, so the right box ships
Parcel
From your saved preset, not from the file
Drop this run's patron export

There is no Patreon connector, so the export is the interface — and starting each run from a new export is not busywork. It is the step that lets a patron's own profile correction reach your labels.

2 Billy AI

Revalidating a cohort that quietly drifts.

Billy AI
  • Checks every row on every run, however many runs that patron has already survived
  • Flags the defects while they are still a message to a patron, not a parcel in a returns pipeline
  • Classifies each row residential or commercial before any money leaves the balance
  • Drafts the one-off replacement reward from a pasted patron message, on every plan
Revalidated. Preset loaded. Rows priced.
3
The run buys row by row
One flagged row holds one parcel
Paid from the prepaid wallet
Card, Apple Pay, Google Pay, ACH, or crypto
all-in
USPS
Row purchased
Cheapest of four for that row
all-in

Nothing is carried over from last quarter: rates are re-quoted per row, so a patron who moved three zones out changes carrier without you noticing. A row that fails validation waits for its correction while the rest of the run ships.

Patreon is not on this grid, and the export suits a cohort better

No Patreon connector. The per-run export is the integration.

Store sync covers Shopify, Etsy, WooCommerce, TikTok Shop, Amazon, eBay, Squarespace, Wix, Walmart, Square, BigCommerce, Magento, and Temu — useful if the merch shop beside your Patreon is one of them. Patreon itself is not, so each run starts from a fresh patron export. For a recurring cohort that is arguably the better shape: a per-run export is a deliberate moment to pick up every correction a patron made since the last one.

Via AItiles: paste the message from the patron who wrote after the run shipped, and Billy drafts the replacement label from it.

Shopify logo Shopify
Etsy logo Etsy
WooCommerce logo WooCommerce
TikTok Shop logo TikTok Shop
Instagram logo Instagram AI Facebook logo Facebook AI
Amazon logo Amazon
eBay logo eBay
Show 15 more Show less
Squarespace logo Squarespace
Wix logo Wix
Walmart logo Walmart
Shopify Plus logo Shopify Plus Soon
Square logo Square
BigCommerce logo BigCommerce
Magento logo Magento
Zapier logo Zapier Soon
NetSuite logo NetSuite Soon
Ecwid logo Ecwid Soon
Temu logo Temu
Shein logo Shein Soon
ChannelAdvisor logo ChannelAdvisor Soon
SkuVault logo SkuVault Soon
Zoho Inventory logo Zoho Inventory Soon
Built for the run-over-run loop

The first run is setup.
Every run after is cadence.

Recurring fulfillment rewards whatever amortises: mappings that persist, presets that carry parcels, validation that runs itself. Each piece below exists to make run ten cheaper than run one.

Postage on your rhythm,
not a plan's

One prepaid balance funded by card, Apple Pay, Google Pay, ACH, or crypto, debited only when a label is bought. A monthly tier, a quarterly tier, and an annual tier can all draw on it — and the eleven quiet months of an annual tier owe nothing to anybody.

Wallet balance
$1,247.36 USD
AI

Validation that treats
every run as run one

Every row is re-validated on every run with a residential or commercial classification, no matter how many runs that patron has survived. Drift does not announce itself — the check that catches it has to be unconditional, and here it is the default rather than a discipline.

Billy LIVE
Where's the package to Maya?
It's in transit via UPS. Expected Friday, Aug 7.
UPS
1Z8923A6B05G4123456
In transit
Austin, TX → Dallas, TX
Ask Billy anything...

Saved mappings
and saved parcels

The Patreon export's columns are paired to shipping fields once and saved; the reward box's weight and dimensions are saved once too. Run two is export, load, validate, buy — the setup work exists exactly once in the life of the tier, which is the whole economics of a recurring batch.

Shipment summary
UPS Ground $12.49
Insurance $0.75
Fuel surcharge $0.32
Total $13.56

Four carriers,
re-quoted per run

USPS, UPS, FedEx, and DHL are priced per row on every run rather than locked in once — so a rate change between quarters, or a patron who moved three zones out, changes which carrier wins without you noticing or caring. The quote tracks the cohort as it drifts.

Compare rates
UPS UPS $12.48
FedEx FedEx $13.22
DHL DHL $14.10
USPS USPS $11.79
Duties & taxes paid

An API for creators
who script their runs

Creators with a developer in the community can drive the same loop over REST: quote, buy, and track per row with signed webhooks and real idempotency keys, unlimited calls on every plan — a reward run as a script that fires the morning after the tier bills.

POST /v1/shipments
{
"to": { "name": "Maya" },
"from": { "name": "Alex" },
"service": "ups_ground",
"label_format": "pdf"
}
Webhook delivered
GoatLabels mobile queue showing a Patreon reward run purchasing row by row
Billy drafting a replacement reward label from a pasted patron message on mobile

Run row bought

Quarterly print tier · Providence, RI

A run does not need a desk

Watch the run finish from the studio floor.

Reward runs get packed wherever the boxes are. The batch itself starts on a laptop with a file, but everything after it — which rows are still flagged, which patron needs messaging, the replacement for the one who moved — belongs on the phone in your apron pocket.

See which rows of the run are flagged, bought, or still waiting on a patron's reply.
Paste the message from the patron who moved and Billy drafts the corrected label from it.
Four all-in prices on that one-off parcel, quoted the same way the batch quoted the run.
One tap prints the row's label to the share sheet or a thermal printer over Wi-Fi.
Bought a row against a stale address? Void it and the credit is back for the reship.
Billy is on every plan, quiet months included

Ask about one patron's reward with a box in each hand.

Packing a hundred near-identical rewards is a two-handed job, and the question that interrupts it is always about exactly one patron. Ask out loud and Billy finds that row's shipment and reads the status back — which is also the answer you owe whoever messaged you. Included on every plan, so the eleven silent months of an annual tier cost nothing to keep it. This is the real product, not a render.

goatlabels.io/dashboard/shipments — Billy
Billy reading a reward run shipment's tracking status back over the purchased labels list

Listening

"Did this quarter's print ship to Priya yet?"

Out for delivery

Quarterly tier · Providence, RI · scanned this morning

Speaks plain English · remembers your saved parcel presets between runs · included on every plan, never a paid tier.

All-in quotes, per row

A hundred identical boxes are still a hundred quotes.

A reward run tempts you into flattening the whole file onto one carrier, because the boxes really are identical. The addresses are not: the same parcel to a patron three zones further out is a different price, and re-quoting every row on every run is what stops the cohort's drift from quietly costing you. Each column is one all-in number locked at quote time. Figures are illustrative.

Denver, CO → Austin, TX 1.4 lb 10×7×4 in
Cheapest for this row
USPS

USPS

Ground Advantage

2–5 days

$7.40

$1.20 of Premium insurance included

all-in · one balance for the whole run

UPS

UPS

Ground

3–4 days

$10.80

$1.20 of Premium insurance included

all-in · one balance for the whole run

FedEx

FedEx

Home Delivery

2–4 days

$11.40

$1.20 of Premium insurance included

all-in · one balance for the whole run

Re-quoted every run, never carried over Void a row bought on a stale address → credit back to your wallet Every row traceable to its patron
Public API v1

A reward run as a script that fires after the tier bills.

Recurring is the word that makes an API worth having: the same run, on the same cadence, indefinitely. Creators with a developer in the community can drive the whole loop in code — pull the roster, validate, quote, buy — with unlimited calls on every plan, so automating a monthly run never moves you onto a pricier one.

Quote and buy per row from your own loop — no per-request pricing, ever
Real idempotency keys, so re-running a batch never buys a patron a second label
Signed webhooks instead of polling, so returns and exceptions surface between runs
OpenAPI 3.1 spec, no SDK lock-in, and unlimited calls on Free
Read the API docs Get a free API key $0 on every plan
curl https://api.goatlabels.io/api/v1/shipments
POST /api/v1/shipments
Authorization: Bearer sk_live_…
Idempotency-Key: ord_8421

{
  "to": { "name": "Joyce", "city": "Berlin", "country": "DE" },
  "parcel": { "weight": 2.6, "weight_unit": "lb" },
  "service": "fedex_intl_priority"
}
Priced for a cadence with gaps

Pay when the run ships. Owe nothing in between.

A reward run is a burst of postage followed by weeks of silence, and a monthly software fee taxes the silence. Here the Free plan covers a typical run outright — batches included — and the wallet only moves when a label is bought. Pro exists for the cohort that outgrew it, never as a condition of printing.

Pro

Most popular
$40 / month
Unlimited shipments — for the tier that took off
Cheaper label pricing as run sizes grow
Billy AI on Telegram — check a run's tracking without opening the dashboard
API access still free and unlimited

Volume pricing

illustrative
less volume more volume

bigger runs → lower per-label rates

Free

$0 / forever

A hundred-patron quarterly run, four times a year, on the plan that costs nothing.

50 shipments a month, no monthly minimum to print
CSV batches with saved column mappings and per-row validation
USPS, UPS, FedEx, and DHL rate-shopped on every row
Billy AI in the web app for the one-off reward and the moved patron
REST API with unlimited calls; fund by card, Apple Pay, Google Pay, ACH, or crypto

Billy covers the stragglers

The patron who messages a new address the day after the run, the one-off replacement reward — paste the message and Billy drafts the label, validated before you pay. The batch handles the cohort; Billy handles the exceptions.

Web — every plan Telegram — Pro

API free on every plan

GET /api/v1/shipments

200 OK · plan: free

Unlimited calls on Free — still unlimited on Pro.

We'll beat your current rates

Bring your invoice — on Pro we work with you to beat the rates you're getting from

ShippoPirateShipShipStation
No contracts No monthly minimum to print Start in seconds
USPS UPS FedEx DHL

Label prices are quoted live from USPS, UPS, FedEx, and DHL as one all-in number per row, and that exact amount leaves the prepaid balance when the row is bought. Full pricing details

Cadences, and what each one costs to run

Four reward rhythms. One amortised loop.

Monthly, quarterly, annual, or the tier that ships once — drift and setup cost land differently on each of them, and the saved preset is what flattens all four.

Monthly zine and print tiers

Twelve runs a year, same cohort

Highest drift

The cadence that compounds fastest: twelve chances a year for an address to go stale, and twelve chances to catch it. Revalidating every row on every run is what turns a recurring loss into a recurring correction.

1 saved mapping, reused every run every row revalidated four quotes per row
goatlabels.io/dashboard/shipments
GoatLabels shipments queue showing a Patreon reward run purchasing row by row

Quarterly box tiers

Four runs, near-identical parcels

A quarter is long enough for a cohort to drift and short enough that setup cost still matters. Saved parcel presets carry the box across the whole file, so the work per run is the export and the two messages to the patrons who moved.

Run loaded from the saved preset

Columns paired once, on run one, and never again

Creators fielding the follow-ups

The patron who writes after the run shipped

just saw the shipping email — I moved last month!
New address validated · replacement drafted

Annual and one-shot reward tiers

Eleven months of nothing at all

0

owed in every month the run does not ship

Patreon reward shipping — FAQ

How do I get patron addresses into shipping labels?
Export the patron list with addresses from Patreon, upload the file, and map its columns to shipping fields once — the mapping saves as a preset for every later run. Each row is then validated and quoted across USPS, UPS, FedEx, and DHL before anything is bought, and the batch purchases row by row from one prepaid wallet. Patreon supplies the addresses; the batch loop does the rest.
What happens when a patron moved since the last run?
If the profile was updated, the fresh export simply carries the new address — which is why each run should start from a new export, never a reused file. If it was not updated, per-row validation usually flags the defect before you pay, and a parcel that ships anyway comes back as a return that names exactly whose record is stale. Fix it on the patron's profile so every future export inherits the correction.
How do recurring reward runs differ from a one-off campaign?
A campaign ships one frozen list once, so its problem is addresses that aged between pledge and fulfillment — that story lives on the Kickstarter page. A reward run repeats against a living cohort, so its problems are drift between runs and setup cost per run. The fixes are cadence-shaped: fresh exports, validation every time, and a saved column mapping so run two costs minutes instead of an evening.
Do annual-reward tiers need shipping software the rest of the year?
No, and they should not pay for any. An annual run means eleven months in which nothing ships, and a prepaid wallet costs exactly nothing in those months — no plan, no monthly minimum to print. The saved mapping and parcel presets wait unchanged, so the once-a-year run starts from the same three steps as a monthly one: export, load preset, validate.
Does GoatLabels connect to Patreon?
No — there is no Patreon connector, and store sync covers Shopify, Etsy, WooCommerce, and TikTok Shop only. The honest workflow is the export: pull the patron list from Patreon each run and run it as a CSV batch here. Nothing about the loop needs a connector, and the fresh-export habit is what keeps drift out of your runs anyway.

Related: Kickstarter fulfillment, bulk labels from a CSV, why parcels come back, and the full pricing model.

Real sellers, real words

What creators say once the run stops eating a weekend.

A video took off and I had 80 TikTok Shop orders by morning. I printed every label from my phone on the bus to the post office.
E

Early customer · TikTok

TikTok Shop seller

TikTok Shop
I run my Etsy shop from the kitchen. The AI reads the order, picks the carrier, the label prints. That's the whole workflow now.
E

Early customer · Etsy

Etsy maker

Etsy
The API is what every shipping API pretends to be. Idempotency that actually works.
S

Sasha R.

Staff engineer, marketplace

API user
Run ten should take minutes. Start amortising.

This month's run,
mapped for every month after.

Export the patron list, map it once, validate every address, and buy the batch across four carriers from one prepaid wallet — then do it all again next run, minus the setup.

Sign up in seconds. No card required. No subscription between runs — an annual tier costs postage once a year.