Step 4 of 4

Add Products & Go Live

Create your admin account, add products, test a purchase, and launch your store.

You'll need your deployed store URL, your product details (names, prices, images), and access to your Supabase dashboard. No real credit card required — you'll test with Stripe's test card · Estimated time: 30–45 min

1. Create Your Admin Account

Nobody is an administrator yet — your store has no users at all. There are two ways to create the first admin. Pick A if you have the code checked out on your computer, B if you deployed straight from the browser and never cloned anything.

Route A — from a local clone

In your local copy of the store, make sure .env.local contains the NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY of your production Supabase project, then run:

npm run seed

That creates one administrator with these credentials:

Email:    admin@demo.com
Password: Demo1234!

The command is safe to run more than once. It creates the admin user only — your store still starts with no products. Setting up a local clone is covered in Local Development.

These are published default credentials. admin@demo.com / Demo1234! appear in this guide and in the product README, so every ShipCommerce owner — and anyone who reads the docs — knows them. Anyone who reaches your admin login can walk in. Change the password before you share your store URL with anyone. Section 2 shows you where.

Route B — no local clone

Create a normal customer account through your own storefront, then promote it in Supabase:

  1. Open your live store and sign up with the email address you want to use as the administrator. Choose a strong password now — this one is yours, not a shared default.
  2. Go to your Supabase dashboardTable Editor → the profiles table
  3. Find the row whose email matches the account you just created
  4. Set is_admin to true and save the row
  5. Sign out and sign back in so the change takes effect

This route needs no terminal at all, and it never puts a shared password on your store. Use the same steps later if you want to promote a colleague to administrator.

2. Log In and Change Your Password

  1. Go to yourstore.com/admin. If you are not signed in, you'll be sent to the admin login page at /login.
  2. Sign in with the account from section 1.
  3. If you used Route A, change the password immediately: open yourstore.com/profile/settings and use the Password tab.

Locked out? If /admin bounces you back to the login page even after signing in successfully, the account is authenticated but not an administrator. Check that its row in the profiles table really has is_admin = true.

3. Add Your Products

  1. In the admin panel, go to Products
  2. Click Add Product
  3. Fill in the product details: name, description, price, images
  4. Add variants if needed (size, color, etc.)
  5. Set the product as Active to make it visible in your store
  6. Repeat for all your products

Tip: Add 2–3 products first and run the test purchase in section 5 with them. It is much less painful to discover a checkout problem with three products in the catalogue than with three hundred.

4. Set Up Categories

  1. Go to Categories in the admin panel
  2. Create your product categories
  3. Assign products to their categories

5. Test a Purchase

Test before you take real money. If you set up Stripe in Step 3, do it in test mode first — no real charges, nothing to refund, and a failed test costs you nothing.

Testing with Stripe test mode

  1. In the Stripe dashboard, switch Test mode on and copy the test keys (they start with pk_test_ and sk_test_).
  2. In Vercel → Settings → Environment Variables, set NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY and STRIPE_SECRET_KEY to the test keys, and STRIPE_WEBHOOK_SECRET to the signing secret of a test-mode webhook endpoint (see Step 3 — test mode and live mode have separate endpoints and separate secrets).
  3. Redeploy so the new values take effect.
  4. Open your store in a private browser window and create a customer account.
  5. Add a product to the cart and go through checkout.
  6. Pay with Stripe's test card:
    Card number: 4242 4242 4242 4242
    Expiry:      any future date
    CVC:         any 3 digits
  7. Confirm that:
    • The order appears in your admin panel under Orders
    • The confirmation email arrives
    • The payment shows in your Stripe test payments

Payment succeeded but no order appeared? That is the classic sign that your webhook is not reaching the store — the payment lives in Stripe but your database never hears about it. Re-check the endpoint URL and the subscribed events in Step 2 before going live, or see Troubleshooting.

Testing without Stripe

Cash on delivery and bank transfer work out of the box, with no Stripe account and no keys. If that is how you're selling, place a test order with one of those methods and check it lands in Orders in the admin panel. It will sit there as unpaid until you mark it paid — which is exactly what it should do.

You can launch this way and add Stripe later; nothing in the store has to be rebuilt for it.

Switching to live payments

Once the test order behaves, swap test mode out:

  1. Turn Test mode off in Stripe and copy the live keys (pk_live_ / sk_live_).
  2. Update the three Stripe variables in Vercel, including the signing secret of your live webhook endpoint.
  3. Redeploy.
  4. Optionally place one real, cheap order with your own card to confirm the live path, then refund it from the Stripe dashboard.

No confirmation email? Check your Resend dashboard to see whether the email was sent. If RESEND_API_KEY is not set, no emails are sent at all. If it is set, make sure your sending domain's DNS records are verified in Resend.

6. Customize Your Store

  1. Update the store logo and branding
  2. Edit the homepage content
  3. Rewrite the Privacy Policy and Terms of Service pages — the shipped versions are placeholders, not legal advice for your business
  4. Set the contact email your customers will see

7. Pre-Launch Checks

Two checks catch most of what goes wrong quietly after launch.

Run the health check

From a local clone whose .env.local matches your production values:

npm run post-deploy

It verifies the critical environment variables, checks that Supabase is reachable with its schema and storage bucket in place, and warns you if a production URL is still running on Stripe test keys. If you are not using Stripe, the missing Stripe variables it reports are expected.

Confirm the cleanup cron is scheduled

Unpaid cash-on-delivery and bank-transfer orders hold their stock in reserve. /api/cron/cleanup-abandoned-orders cancels the ones nobody completed (after 72 hours by default) and returns that stock to your inventory. If it is never called, those orders pile up and the reserved stock is never released — items look sold out when they are sitting on your shelf.

In Vercel, open your project → Settings → Cron Jobs and confirm the job is listed. If it isn't, add the vercel.json from Step 3 and redeploy. You can also call the route by hand to prove it works:

curl -H "Authorization: Bearer $CRON_SECRET" \
  https://yourstore.com/api/cron/cleanup-abandoned-orders

8. Submit to Google (Optional)

  1. Go to Google Search Console
  2. Add your domain and verify it
  3. Submit your sitemap: yourstore.com/sitemap.xml

9. Google Shopping Feed (Optional)

Your store generates a Google Shopping product feed automatically. Submit it to Google Merchant Center to list your products on Google Shopping.

  1. Go to Google Merchant Center and sign up
  2. Add your store URL and verify your domain
  3. Go to Products → Feeds → Add feed
  4. Choose Scheduled fetch and enter your feed URL:
https://yourstore.com/feed/google-shopping

Replace "yourstore.com" with your actual domain.

Launch Checklist

  • Admin password changed from the default
  • Products added with images and prices
  • Categories created
  • Test purchase completed and the order appeared in the admin panel
  • Live Stripe keys in place (if you take card payments)
  • Confirmation email received
  • npm run post-deploy passes
  • Cleanup cron scheduled and reachable
  • Store branding updated
  • Legal pages customized
  • Site looks good on mobile

🎉

You're live!

Your store is ready for customers. Share your link and start selling.

Need Help?

Professional plan customers get email support for six months from purchase; Lifetime plan customers get priority email support for twelve months. The exact scope of each plan is on the plan details page. Either way, write to us at hello@shipcommerce.io

Was this step clear?