Shopify App Review Guide

Carbonaa — Setup & Billing Screencast Guide

This page documents every step a Shopify reviewer needs to set up, test, and verify the Carbonaa Carbon Offsets app — including the Shopify Billing API flow.

1. Install the App

Carbonaa is a Shopify embedded app. Installation takes under minute.

1

Install from the Shopify App Store

Click "Add app" on the Carbonaa listing in the Shopify App Store. Shopify redirects you to the OAuth consent screen.

2

Approve OAuth scopes

Carbonaa requests minimal scopes: read_orders, read_products, write_products. No billing scopes are requested at install — billing is initiated only when you add offset capacity.

3

App opens inside Shopify admin

After OAuth, the app loads inside the Shopify admin iframe at /ShopifyHome. You see the Carbonaa dashboard with a welcome state prompting you to add offset capacity.

4

Carbon Offset product auto-created

The app automatically creates a "Carbon Offset by Carbonaa" product in your store (archived, not visible to customers directly). This product powers the customer opt-in checkbox at checkout. If auto-creation fails, a red banner appears with a "Complete Installation" button to retry.

2. Add Offset Capacity (Billing Flow)

This is the core billing flow. Carbonaa uses the Shopify Billing API (appPurchaseOneTimeCreate) — the merchant never leaves Shopify.

1

Click 'Add Offset Capacity'

From the Shopify Workspace dashboard, click the green "Add First Offset Capacity" (or "Add Offset Capacity") button. This opens the Carbon Projects page in a new tab.

2

Choose a verified carbon project

The Carbon Projects page shows live, verified carbon offset projects (Verra / Gold Standard) with real-time stock and pricing from ClimateTrade. Click "Buy Credits" on any project.

3

Enter volume and details

On the Buy Credits page, select a volume (e.g., 10 tonnes), enter your email (for certificate delivery) and organization name (appears on the certificate).

4

Click 'Add Offset Capacity — Secure Checkout'

This calls the merchantInventoryCheckout backend function, which creates a Shopify one-time app charge via the Billing API. The merchant is redirected to a Shopify-hosted approval page (not a third-party checkout).

5

Approve or decline the charge

On the Shopify approval page, the merchant sees the exact amount, project name, and description. They can approve or decline. This is the Shopify Billing API's native accept/decline flow.

6

Approval activates capacity

On approval, Shopify fires the app_purchases_one_time/update webhook. The webhook handler flips the MerchantCreditPurchase status to active and the merchant is redirected back to the workspace showing "Offset Capacity Activated".

Reinstall behavior (requirement 1.2.2)

If a merchant uninstalls and reinstalls the app, the billing flow works identically — each "Add Offset Capacity" creates a fresh appPurchaseOneTimeCreate charge. There is no stale charge state. The merchant can accept, decline, and request approval again on every reinstall.

3. Customer Opt-In Widget

A Theme App Extension adds an opt-in checkbox to the product page (or cart/checkout, configurable).

1

Theme App Extension

Carbonaa uses a Shopify Theme App Extension (not a ScriptTag) to render the offset opt-in checkbox. This is the modern, App Store-compliant approach. The checkbox appears on product pages by default.

2

Customer sees the checkbox

When a customer views a product, they see a checkbox: "Make my order carbon-neutral (+$X.XX)". The price is calculated from the product's estimated CO₂ footprint.

3

Opt-in adds the Carbon Offset product

When the customer checks the box, the "Carbon Offset by Carbonaa" variant is added to their cart. When they complete checkout, the orders/create webhook fires and Carbonaa processes the offset.

4. Automatic Offsetting

1

Order webhook fires

When an order containing the Carbon Offset product is placed, Shopify sends the orders/create webhook to Carbonaa.

2

Carbon retired from your capacity

Carbonaa deducts the CO₂ amount from the merchant's prepaid offset capacity. If capacity is insufficient, the order is queued and offset automatically when capacity is added.

3

Certificate emailed to customer

A retirement certificate (from Verra/Gold Standard registry) is generated and emailed directly to the customer within 2-5 minutes.

5. Certificates & Revenue Share

1

Merchant certificates

Each capacity purchase generates an official retirement certificate, downloadable from the workspace dashboard. The certificate is verifiable on the Verra or Gold Standard registry.

2

Revenue share (usage billing)

When customers opt in and pay the offset fee, Carbonaa collects the fee via Shopify. The merchant's sell-side margin is collected using the Shopify Billing API Usage Records (appSubscriptionCreate + appUsageRecordCreate). One usage record is created per opted-in order — this is a real Shopify charge on the merchant's Shopify invoice.

6. Testing & Review Notes

How to test the billing flow

  1. Install Carbonaa on a Shopify development store (the app uses live Shopify Billing API charges; on a dev store owned by the same Partner org, charges are free/test mode).
  2. Navigate to the app → click "Add First Offset Capacity".
  3. Select any project → enter 10 tonnes → enter a test email and org name.
  4. Click "Add Offset Capacity — Secure Checkout".
  5. You are redirected to a Shopify-hosted approval page — approve the charge.
  6. You return to the workspace with "Offset Capacity Activated" banner.
  7. Place a test order on your store with the opt-in checkbox checked to verify the order webhook flow.

Billing API implementation summary (for reviewer)

  • • One-time charges: appPurchaseOneTimeCreate mutation (offset capacity purchases)
  • • Usage charges: appSubscriptionCreate + appUsageRecordCreate (sell-side margin collection)
  • • Webhook: app_purchases_one_time/update handles approval/decline
  • • No off-platform billing: The merchant approves all charges on a Shopify-hosted page
  • • Reinstall: Each checkout creates a fresh charge — no stale state, works on reinstall

No API keys required for testing

Carbonaa does not require the reviewer to provide any API keys or secret keys. The app integrates with:

  • • Shopify Billing API — handled automatically via the app's Shopify access token
  • • ClimateTrade — Carbonaa's own provider account (no reviewer credentials needed)
  • • Verra / Gold Standard registries — public verification, no credentials needed

Simply install the app on your Shopify dev store and follow the steps above.

Questions during review? Contact amin@carbonaa.net

base44
Edit with Base44