Shopify
Podium syncs products and orders with Shopify stores via OAuth and webhooks.OAuth Installation
1
Initiate OAuth
Redirect the merchant to the Shopify install endpoint:This generates a Shopify OAuth authorization URL with the required scopes.
2
Authorize
Shopify redirects the merchant to grant permissions. Required scopes:
read_products,write_productsread_orders,write_ordersread_inventory
3
Callback
Shopify redirects to
/api/v1/shopify/callback with an access token. Podium stores the token in a ShopifyStore record linked to the creator.4
Initial sync
After OAuth completes, trigger an initial product sync:This dispatches a
shopify-products-sync event that fetches all products from the Shopify store in the background.Synced Data Mapping
Product data flows from Shopify into Podium. Order data flows from Podium back to Shopify via the
shopify-order-push event.
Webhook Events
Shopify sends webhooks toPOST /webhooks/shopify with the X-Shopify-Topic header:
Webhook Verification
Troubleshooting
Stripe Connect
Creators receive payouts through Stripe Connect Express accounts.Setup Flow
1
Create Stripe account
2
Complete onboarding
Redirect the creator to the Stripe onboarding URL. They’ll complete identity verification and bank account setup directly with Stripe.
3
Account activation
Stripe sends an
account.updated webhook when onboarding is complete. Podium updates the StripeAccount status to active.Platform Fee Configuration
Podium takes a platform application fee on every transaction:Payout Flow
- Customer pays → Stripe PaymentIntent succeeds
- Platform fee deducted automatically
CreatorPayoutrecord created withPENDINGstatus- After hold period → status changes to
ELIGIBLE payouts-sweepcron transfers eligible payouts to creator’s Connect accounttransfer.createdwebhook confirms → status updates toTRANSFERRED
Onboarding Reminders
If a creator doesn’t complete Stripe onboarding within 48 hours, thestripe-onboarding-reminder cron sends an email reminder. The reminder tracks:
stripeOnboardingReminderSentAt— when the last reminder was sentstripeOnboardingReminderClaimedUntil— suppresses reminders until this date
Troubleshooting
Privy Wallets
Privy provides embedded wallet infrastructure for both server-side automation and client-side user wallets.Environment Variables
Server Wallets (Backend / Agents)
Server wallets are platform-managed — your backend controls signing. Used for automated x402 payments, reward minting, and agent-initiated transfers.Embedded Wallets (Frontend)
Embedded wallets are auto-created for end users on first login, giving them a non-custodial wallet without seed phrase management.User Linking
Privy users are linked to Podium users via thePrivyUser model:
Resolve the link with:
Funding Embedded Wallets
Users can fund their embedded wallets via:- Apple Pay / Google Pay (through Privy’s fiat on-ramp)
- Coinbase transfer
- Direct USDC transfer from any wallet
- Points-to-USDC conversion (if enabled)
Troubleshooting
Stream Chat
Podium integrates Stream Chat for real-time messaging between users and creators.Environment Variables
Setup
1
Generate tokens
Server generates Stream Chat tokens:or for creator-initiated chats:
2
Client connection
Connect using the Stream Chat SDK with the generated token:
3
Channel creation
Channels are created per user-creator pair. The server creates and manages channels to enforce access control.
Request Body
Shippo Shipping
Podium uses Shippo for shipping rate calculation and label generation.OAuth Installation
1
Initiate OAuth
2
Callback
Shippo redirects to
/api/v1/shippo/callback with an access token. Stored in ShippoAccount linked to the creator.Get Shipping Quotes
Generate Shipping Label
Flat Rate Fallback
Creators can set aflatShippingRate (in cents) on their profile as a default when Shippo quotes aren’t available or desired:

