Home›Extensions›Setting up Printful (print-on-demand)

Setting up Printful (print-on-demand)

The Printful extension connects your Printful print-on-demand store to TitanCart. It imports your Printful products as real storefront products, sends paid orders to Printful for fulfillment, can charge your customers Printful’s live shipping rates at checkout, and can add tracking to an order automatically once Printful ships it. Allow about twenty minutes. You need a Printful account with at least one synced product.

1. What you need

Printful is included with TitanCart Pro. There is no separate purchase and no license key to enter — your Pro subscription is the entitlement. In Extensions → Installed Extensions the Printful row shows an Included in Pro pill instead of a key field.

  1. If it isn’t installed yet, go to Extensions → Extensions Marketplace and install Printful from there.
  2. Open Growth → Printful.

Note: the Enable Printful toggle stays locked until you have connected a Printful account — that’s expected, and it is the connection it is waiting for, not a key. Connect first, then enable. Nothing imports, syncs, or pushes until that toggle is on.

2. Connect your Printful account

On the Growth → Printful page, open the Connection section and paste a store-level private token, then click Connect.

  1. In the Printful Developer Portal, open Settings → Developers and create a private token for your store.
  2. Give the token these scopes, or the integration will fail partway through: sync products, orders, stores, file library, and webhooks.
  3. Paste the token and click Connect.

When the token is valid the section shows a green dot and Connected to <your store name> with the Printful store number — that confirms TitanCart is talking to Printful. A Disconnect button replaces the token field.

Note: the token is store-level. If you run more than one Printful store, use the token for the store whose catalog you want to sell through this site. The token is write-only over the API — TitanCart never displays it again after you save it.

3. Set your import and fulfillment options

Once connected, the Import & fulfillment section appears with five controls. Set them before your first import, then click Save settings.

  • Enable Printful — the master switch for product sync and order fulfillment. Off by default.
  • Order handling — Create as draft (confirm in Printful) is the default and the safer choice; Auto-confirm on payment sends orders straight into production. See section 7.
  • Stock — Always in stock (default) or Follow Printful availability. See section 6.
  • Daily auto-sync — off by default. See section 6.
  • Live Printful shipping rates — off by default. See section 9.

4. Import your products

Open the Import & sync section and click the Import & sync button. A progress bar shows how many products were created, updated, removed, and grouped as it works through your catalog. Large catalogs take a few minutes — keep the tab open.

When it finishes:

  • Each Printful product becomes one storefront card, with its size and color options as selectable variants — not a separate card per size.
  • Each variant keeps its own product code (the SKU, in Printful’s own wording) and its own retail price.
  • Printful mockup images are pulled into your media library and attached to the product. Mockups shared across sizes are downloaded once and linked to each variant.
  • Print-on-demand items are imported as made-to-order, so they are sellable without stock tracking.

Note: the import is all-or-nothing by design — there is no per-product picker. Every synced product in the connected Printful store is imported. If you want only some products on this site, unsync the rest in Printful first.

5. Where imported products land

Imported products are not placed in a category. The Printful page has no category setting, so imported items arrive uncategorized and will not appear in category navigation until you file them.

The quickest fix is to assign them in bulk after the first import:

  1. Go to Products and filter or search for the imported items.
  2. Select them, open the bulk editor, and set Categories for the whole selection at once.

Categories you assign are yours — re-running the import does not clear them.

6. Keeping your catalog in sync

Running Import & sync again is safe. It is a reconcile, not a duplicate import: new products are added, existing ones are updated in place, and nothing unchanged is touched. There are two ways to keep the catalog aligned:

  • Manual — click Import & sync whenever you want.
  • Daily auto-sync — turn the toggle on and TitanCart runs the same reconcile once a day.

Note on the daily job: it runs on WordPress’s scheduler, which is triggered by site traffic. On a quiet site “daily” can drift, and a site with no visitors may not run it at all. If the timing matters, ask your host to disable WP-Cron and run it from a real server cron instead.

Who owns what

This is the part worth understanding before you edit anything, because the rules differ per field:

  • Printful owns price, images, and variant structure. A price change in Printful updates your store on the next sync. If artwork changes, the mockups are re-downloaded.
  • You own the product name once you edit it. If you rename an imported product in TitanCart, that name is locked and re-syncing will never overwrite it again — even if the product is later renamed in Printful. Products you have not renamed keep following Printful.
  • Descriptions are written once, on first import. After that they are yours; sync never overwrites them.

Discontinued and removed items

If you set Stock to Follow Printful availability, TitanCart checks each variant and marks a discontinued or unavailable one as sold out — the product stays visible but cannot be added to the cart until it is available again. In the default Always in stock mode, print-on-demand items are always sellable, which is correct for most stores.

A variant Printful no longer lists is marked out of stock and flagged, never deleted. If it reappears in Printful, the next sync restores it automatically.

7. How paid orders reach Printful

When a customer pays for a Printful product, the order is pushed to Printful according to your Order handling setting:

  • Create as draft (confirm in Printful) — the default. The order arrives in Printful as a draft that you review and confirm yourself. Nothing is produced or charged until you confirm it.
  • Auto-confirm on payment — the order is pushed and submitted for fulfillment with no manual step. Switch to this once you trust the flow.

Only the Printful lines of an order are sent. If a customer buys a Printful shirt and one of your own in-house products in the same order, just the shirt goes to Printful.

Note: a push failure never breaks your customer’s checkout. If Printful is unreachable the order still completes normally and the failure is recorded on the order for you to retry.

8. Track fulfillment from the order screen

Open any order under Sales that contains a Printful product and look for the Printful Fulfillment panel. It shows one of these states:

  • Not pushed yet — no push has been attempted.
  • Queued — the push is recorded but has not completed.
  • Draft in Printful — the order is in Printful awaiting your confirmation.
  • Confirmed — submitted for fulfillment.
  • Push failed — with the error message from Printful shown underneath.

Once there is a Printful order number, the panel links straight to that order in your Printful dashboard and shows the item count and push time. A Push to Printful button appears for an order that was never pushed, and a Retry push button appears after a failure. The button is hidden once an order has a Printful order number, so you cannot create a duplicate.

9. (Optional) Charge live Printful shipping rates

By default your normal TitanCart shipping applies. If you’d rather charge exactly what Printful charges you, turn on Live Printful shipping rates and save. A Printful Shipping method then appears at checkout, priced at Printful’s cheapest live rate for the customer’s address, and the customer is charged that same amount.

Note: Printful needs a destination before it can quote. For US, Canadian and Australian addresses it needs the state or region — the method appears once the shopper has entered enough of their address. Turning the toggle back off restores your normal shipping unchanged.

If you sell your own products alongside Printful ones, read this. On a cart containing only Printful items, the Printful rate replaces your normal shipping methods — which is the intended behavior for a pure print-on-demand store. On a mixed cart, the Printful Shipping method prices only the Printful lines, so your own products would effectively ship free under that method. If you sell both, either keep carts to one source or leave this toggle off and use your own shipping rates.

10. (Optional) Turn on automatic tracking

The Fulfillment webhooks section lets Printful tell TitanCart the moment an order ships. Click Register webhooks and the status dot turns green. From then on, when Printful ships a package, TitanCart records a shipment with the carrier and tracking number, adds the tracking link, and clears the order out of your Fulfillment queue — no manual entry. An order that ships in several packages records each one separately, and a repeated notification from Printful is ignored rather than duplicated.

Important: Printful supports one webhook configuration per store, and registering replaces whatever was there before. If you already have another system receiving Printful webhooks for this store — an old storefront, or a separate integration — registering here will disconnect it. Check before you click.

Registration re-checks itself whenever you open the TitanCart admin, so if your site URL changes it repairs itself on the next admin page view. If the dot ever shows unregistered, click Re-register.

How to verify on Printful’s side

When something looks wrong, these are the checks that tell you which side the problem is on:

  • The connection — in Printful, open Settings → Developers and confirm the token you pasted is still listed and not expired or revoked. If you regenerated it, reconnect in TitanCart.
  • The order — click the Printful order number in the Printful Fulfillment panel. It deep-links to that order in your Printful dashboard. A draft sits under your orders awaiting confirmation; confirm it there to start production.
  • The items — check that the variant on the Printful order is the one the customer bought. TitanCart matches on Printful’s sync variant, so a product that was unsynced and re-synced in Printful should be re-imported in TitanCart before you rely on it.
  • The webhooks — in Printful, confirm the registered webhook URL points at this store and that the subscribed events include package shipped, order updated and order failed. Those three are what TitanCart registers.
  • Shipping quotes — Printful prices from the destination country and state. If the rate looks wrong, confirm the address on the order matches what you expect, and compare against a manual quote in Printful for the same items and destination.

Troubleshooting

  • The Enable Printful toggle won’t switch on — connect a Printful account first. The toggle is gated on a live connection, not on a license key; Printful needs no key on a Pro store.
  • Connect says the token is invalid — regenerate a private token in the Printful Developer Portal under Settings → Developers, check you copied the whole string with no trailing spaces, and confirm it carries the five scopes listed in section 2.
  • Imported products don’t show in any category — expected; imports arrive uncategorized. Assign categories in bulk from Products (section 5).
  • I renamed a product in Printful and TitanCart didn’t update it — you renamed it in TitanCart at some point, so the name is locked to you deliberately. Everything else about it still syncs. To hand the name back to Printful, delete the product in TitanCart and re-import it.
  • A product I deleted in TitanCart didn’t come back — re-run Import & sync; the importer re-creates a deleted product on the next run.
  • A discontinued item still shows as buyable — set Stock to Follow Printful availability and re-run the import. In the default Always in stock mode, print-on-demand items are always sellable by design.
  • No “Printful Shipping” method at checkout — confirm Live Printful shipping rates is on, and that the shopper has entered their address including state or region so Printful can quote.
  • My own products are shipping free — a mixed cart with live Printful rates prices only the Printful lines. See the warning in section 9.
  • Orders aren’t reaching Printful — check the order’s Printful Fulfillment panel for the error and use Retry push. Confirm the products in the order were actually imported from Printful, since only mapped lines are sent.
  • Tracking isn’t appearing automatically — open the Fulfillment webhooks section and check the status dot is green; click Re-register if not. Also confirm no other system has since taken over this store’s single webhook slot.
  • Daily auto-sync doesn’t seem to run — WordPress’s scheduler needs site traffic to fire. Run Import & sync manually, or move the schedule to a real server cron.

See also

Previous
Setting up Tips & Donations
Next
Setting up TitanCart Lottery