Zid Docs
Apps
ThemesPayments
Apps
ThemesPayments
Help Center
Slack
  1. Build an app
  • πŸ—‚οΈ Overview
  • πŸš€ Start Here
  • Responses
  • Rate Limiting
  • Embedded Apps
  • StoreFront Events
  • Zid MUI
  • Zid SDKs
  • Our custom MCP server
  • Zid AI Agent Skill
  • Build an app
    • Create your First App
    • Justifying your scopes
    • Submitting your app for review
    • Plans & billing
      • Plans and pricing
      • Creating a plan
      • Usage-based plans
      • Private plans
      • Subscription and app events
  • Authorization
    • Authorization
    • Public Apps OAuth Requirements
    • OAuth Errors & Troubleshooting
    • Zid Bridge Tool
  • Merchant APIs
    • Account
      • Me
        • Me
      • Store
        • Store
        • Branding
        • Localization
        • Social
        • Operations
        • Business
        • Upload Logo Image
        • Delete Logo Image
        • Upload Icon Image
        • Delete Icon Image
        • Upload Cover Image
        • Delete Cover Image
    • Orders
      • Order Tags
        • List Order Tags
        • Create Order Tag
      • Validate Order Request
      • Create Order
      • Change Order Status
      • Add Order Comment
      • View Order
      • List Orders
      • List Custom Order Statuses
      • List Order Credit Notes
      • Get Orders Highlights
      • Order Fulfillment Inventories
      • Bulk Create/Update Custom Order Statuses
    • Reverse Orders
      • Create Reverse Orders
      • Create Reverse Orders Waybill
      • Add Reverse Order Reasons
      • List Reverse Reasons
      • Calculate Reverse Totals
      • Create refund for reverse order
      • Upload bank transfer receipt
      • Update return products
      • Order Details – View for Return
    • Abandoned Carts
      • List Carts
      • View Cart
      • Validate Abandoned Cart Messages
      • Send Abandoned Cart Notification Manually
    • Products
      • Managing Products
        • Create Product Types
        • Create Product
        • List Products
        • View Product
        • List Product Settings
        • Update Product
        • Bulk Update Products
        • Delete Product
      • Digital Vouchers
        • List Vouchers
        • Order Vouchers
        • Create Voucher
        • Import Vouchers
        • Export Vouchers
        • Update Voucher
        • Remove Voucher
      • Product Categories
        • List Categories
        • View Category
        • Create Category
        • Create Subcategory
        • Update Category
        • Assign Product to Category
        • Bulk Assign Products to Category
        • Publish Category
        • Detach Category from All Products
        • Remove Product from Category
        • Set Categories Nesting
        • Delete Category Cover Image
        • Upload Category Cover Image
        • Delete Category
        • Delete Category Image
        • Upload Category Image
        • Update Category
      • Product Brands
        • List Brands
        • Single Brand
      • Product Badge
        • List Badges
      • Product Attributes
        • List Attributes
        • View Attribute
        • Create Attribute
        • Update Attribute
        • Delete Attribute
      • Product Attribute Presets
        • List Presets
        • Create Preset
        • Update Preset
        • Delete Preset
      • Product Variants
        • Create Variants
        • Create Custom Option
        • Update Custom Option
        • Delete Custom Option Field
        • Create Custom Input Field
        • Update Custom Input Field
        • Delete Custom Input Field
      • Product Sorting
        • Set Manual Product Order
        • Reset Manual Product Order
      • Product Images
        • List Images
        • Upload Image
        • Update Image Order
        • Delete Image
      • Product Availability Notifications
        • Notification Stats
        • Noticiation Settings
        • List Notifications
        • Create Notification
        • Update Settings
        • Send Notification Email
        • Export Notifications
      • Product Export
        • Email All Products to Store Owner
        • Import Products via CSV or xlsx File
      • Product Stock
        • Retrieve Product Stock
        • List Product Stock Records
        • Create Product Stock
        • Update Product Stock
        • Bulk Update Product Stock Records
      • Product Questions & Answers
        • Retrieve Product Question
        • Retrieve Product Answer
        • List Product Questions
        • List Answers for Question
        • Create Product Question
        • Create Product Answer
        • Update Product Question
        • Update Product Answer
        • Delete Product Question
        • Delete Product Answer
        • List Store Product Questions
      • Product Reviews
        • List Reviews
        • Count Reviews
      • Digital Products
        • Create Downloadable Product
        • Generate Upload URL
        • Upload File to S3
        • Create Product Downloadable
        • Get Product Downloadables
        • Delete Product Downloadable
        • List Store Downloadables
        • Create Store Downloadable
        • Delete Store Downloadable
    • Inventories
      • Create Location
      • Update Location
      • Update Product Stock for Location
      • List Locations
      • View Location
    • Shipping
      • List Store Shipping Methods
    • Marketing
      • Coupons
        • List Coupons
        • View Coupon
        • Create Coupon
        • Generate Bulk Coupons
        • Duplicate Coupon
        • Duplicate Bulk Coupons
        • Update Coupon Note
        • Update Coupon
        • Update Bulk Coupons
        • Update Coupon Status
        • Update Bulk Coupons Status
        • Delete Coupon
        • Delete Bulk Coupons
      • Bundle Offers
        • List Bundle Offers
        • View Bundle Offer
        • Create Bundle Offer
        • Update Bundle Offer
        • Delete Bundle Offer
        • Bulk Delete Bundle Offers
      • Loyalty Program
        • Loyalty Program Status
        • Loyalty Program Details
        • Loyalty Program Info
        • Customer Loyalty Summary
        • Customer Points History
        • Activate Loyalty Program
        • Set Points Expiration Rules
        • Update Cashback Rule
        • Create Points Redemption Method
        • Update Points Redemption Method
        • Delete Points Redemption Method
        • Adjust Customer Points
        • Update Redemption Method Status
        • Loyalty Program Analytics
        • Loyalty Program Settings
      • Customer Wallets
        • Cashback Rules
          • List Cashback Rules
          • Create Cashback Rule
          • Retrieve Cashback Rule
          • Update Cashback Rule
          • Delete Cashback Rule
        • Wallet Analytics
          • Get Wallet Analytics
          • Get Wallet Analytics by Rule
        • Manager Customer Wallet
          • List Customer Wallets
          • Bulk Credit Customer Wallets
          • Bulk Debit Customer Wallets
          • Export Customer Wallets
          • Get Customer Wallet Balance
          • Credit Customer Wallet
          • Debit Customer Wallet
          • Customer Pending Cashbacks
          • Customer Wallet Transactions
    • Customers
      • Customer Tags
        • List Customer Tags
        • Add Customer Tag
        • Ω’Update Customer Tag
        • Delete Customer Tag
      • Customer Portal Tickets
        • List Customer Portal Tickets
        • Customer Portal Ticket Detail
      • List Customers
      • View Customer
      • Primary Customer List
      • FInd Customer By Phone Number
      • Customer Profile
      • Add Customer
      • Update Customer
      • Delete Customer
      • Add Bulk Customers
      • Import Customers
    • Store Settings
      • πŸ“„ User Roles and Permissions
      • Retrieve Store Manager Profile
      • Retrieve VAT Settings
      • List Payment Methods
      • List Store Operating Countries
      • OneSignal Store Settings
      • Create or Update OneSignal Store Settings
      • Get Payment Options
    • Countries and Cities
      • List Countries
      • List Cities for Country
    • Blogs
      • Settings
        • Create
        • List
      • Categories
        • Create
        • List
        • Bulk Activate
        • Bulk Deactivate
        • Bulk Delete
        • Retrieve
        • Destroy
        • Partial Update
        • Bulk Add To Posts
        • Bulk Remove From Posts
        • Bulk Delete Blog Categories
      • Posts
        • Media
          • List
          • Create
          • Destroy
        • Create
        • List
        • Retrieve
        • Partial Update
        • Destroy
        • Archive
        • Publish
        • Bulk Archive
        • Bulk Publish
        • Bulk Delete
        • Export Posts
        • Import Template
        • Import Posts
      • Tags
        • Create
        • List
        • Retrieve
        • Partial Update
        • Destroy
        • Bulk Delete Tags
        • Bulk Add To Posts
        • Bulk Remove From Posts
      • Storefront
        • Posts
          • List
          • Retrieve
        • Categories
          • List
          • Retrieve
        • Tags
          • List
  • Webhooks
    • Overview
    • Webhook Health Tracking
    • Events
      • Order
      • Product
      • Abandoned Cart
      • Customer
      • Product Category
    • APIs
      • Health Summary
      • Broken Webhooks
      • Recover Broken Webhooks
      • List Webhooks
      • Create Webhook
      • Delete Webhook
      • Delete Webhook By subscriber
  • App Management
    • Events
    • APIs
      • Subscription Details
      • Update Usage-Based Charges
  1. Build an app

Submitting your app for review

Zid reviews every app before it goes live in Zid App Market. This page covers everything that has to be in place, what reviewers check, and the mistakes that most often get an app rejected.
This page applies to OAuth apps published in Zid App Market. Private apps are not listed in the market and do not go through review.
Throughout this page we use an imaginary app, StockSync, as the example.

Part 1: Your account#

These are set once and apply to every app you publish. Your app cannot be submitted until all three are complete.

1. Partnership details#

Partner Dashboard β†’ Partnership β†’ Onboarding
Onboarding is a three-step wizard: Authorized Member β†’ Contact Info β†’ Business Details.
First choose your business type, because it changes what you have to provide.
If you are a company
FieldRequirement
Company name (Arabic)Required
Company name (English)Required
Commercial Registration NumberRequired β€” Saudi CR numbers must be exactly 10 digits
CR CertificateRequired β€” PDF, JPG or PNG, up to 5 MB
Is your company VAT-registered?Required for companies resident in Saudi Arabia
VAT Registration NumberIf VAT-registered β€” 15 digits, starting and ending with 3
VAT CertificatePDF, JPG or PNG, up to 5 MB
Country, CityRequired
Address Line 1, Building Number, DistrictRequired
Postal CodeRequired β€” 5 digits
Address line 2Optional
Work field, Customer countOptional
If you are an individual
FieldRequirement
ID documentRequired β€” PDF, JPG or PNG, up to 5 MB
Freelancer documentOptional
Country, CityRequired
Address fieldsOptional
Document verification is separate from review. Your documents carry a verification state shown at the top of the Partnership page. Until finance verifies them, payouts cannot be settled β€” but an unverified state does not block you from submitting an app.

2. Contact people#

Partner Dashboard β†’ Partnership β†’ Onboarding β†’ Contact Info
FieldRequirement
Partnership Officer β€” Full Name (Arabic)Required
Partnership Officer β€” Full Name (English)Required
Partnership Officer β€” Email AddressRequired
Partnership Officer β€” Mobile NumberRequired β€” format +966 5X XXX XXXX
Add a Financial OfficerOptional toggle β€” a separate person who receives financial correspondence
Keep these current. They are the channel Zid uses to reach you about your review, and a stale email is a common reason a review stalls with no reply.

3. Bank account#

Partner Dashboard β†’ Payments β†’ Bank Account
/partner/{id}/bank-account
Required before submission, even if your app is free β€” a free app can add paid plans later, and the account has to exist first.
FieldRequirement
Bank nameRequired
Account holder nameRequired
CountryRequired β€” detected from your IBAN if you leave it blank
IBANRequired if your country uses IBAN. Letters and digits only, validated
SWIFT / BIC codeAlways required β€” 8 or 11 characters, letters and digits only
Account numberShown instead of IBAN if your country does not use IBAN β€” 4 to 17 characters
Routing numberRequired for US banks
Tax documentPDF, PNG or JPEG, up to 5 MB
Your VAT answer and your tax document must agree. You declare whether you are VAT-registered in Partnership β†’ Business Details, while the certificate is uploaded on the Bank account page, where the field is labelled optional. Reviewers check the two against each other, and a mismatch is one of the most common finance flags.

4. Sign the partnership agreement#

Partner Dashboard β†’ Partnership β†’ agreements
Each app needs a signed agreement before it can be submitted. You can preview the agreement before signing.
An unsigned agreement blocks submission. This is the single most common reason a submission is turned away before review even begins.

Part 2: Your app listing#

Partner Dashboard β†’ Apps β†’ Create application.

Step 1: Choose the app type#

Public appPublished to Zid App Market. Merchants discover, install and rate it. Requires review before going live
Private appOffered to a single merchant store by invitation. Not reviewed, not listed
Choose Public app.

Step 2: Name and categorise it#

Only four things are asked here. Everything else is edited after the app exists.
FieldRequirement
App name (Arabic)Required β€” 3 to 24 characters, must contain Arabic, unique across the market
App name (English)Required β€” 3 to 24 characters, must not contain Arabic, unique across the market
CategoryRequired
TagsOptional
Categories are grouped into Marketing & Growth, Sales & Conversion and Operations & Store Management. Pick the one a merchant would browse to find you.

Step 3: The app editor#

Your app opens on a six-tab editor, and its status starts as Draft:
General settings Β· App details Β· Webhooks Β· Plans Β· Publish Β· Activation

General settings#

Holds your API keys (OAuth 2.0 endpoint, Client ID, Client secret) and the Developer Bridge for testing your OAuth flow before going live.
Below that are Scopes. Each group offers up to three levels β€” None, Read, Read and Write β€” and groups with a single available level are selected automatically and cannot be changed.
Then the justification field, labelled "Why does your app need these scopes?" β€” see Justifying your scopes for what reviewers expect in it:
Briefly explain (50–200 characters) why your app needs the selected scopes β€” reviewers use this to validate the request.
The same tab also holds Embedded experience (run your app inside the dashboard sidebar instead of a new tab) and Storefront snippets (HTML or JavaScript injected at well-known storefront events).

App details#

Everything merchants see in your listing.
Basic info
FieldRequirement
App name (Arabic / English)As above
Developer name (Arabic)Required β€” Arabic letters and spaces only
Developer name (English)Required β€” Latin letters, spaces and hyphens only
App URLRequired β€” must start with https://
Video URLOptional β€” public YouTube link only, other providers are not supported
Category, TagsCategory required
Application links
FieldRequirement
Application websiteOptional β€” your public marketing site, if different from the App URL
Redirection URLRequired β€” where Zid sends merchants after install to start the OAuth flow
Callback URLRequired β€” where Zid returns the OAuth code after the merchant authorizes your app
Maintainer emailRequired β€” reviewers and Zid support reach you here
Support & Policies
FieldRequirement
Phone numberRequired if no support channel URL
Support channel URLRequired if no phone number β€” WhatsApp, Telegram or a support portal are all accepted
FAQ URLOptional
Privacy policy URLRequired for review
A WhatsApp or Telegram link is fine as your support channel. It is not acceptable as your privacy policy β€” that must be a real policy page.
Descriptions
FieldLimit
Short description (Arabic / English)100 characters each
Description (Arabic / English)4,000 characters each
App icon β€” PNG or JPG, exactly square (1:1), maximum 250 Γ— 250 pixels, up to 2 MB.
Screenshots β€” up to 10 each, PNG or JPG.
Screenshots (Arabic)Required. You cannot save your listing without at least one
Screenshots (English)Optional β€” shown to merchants viewing your listing in English

Testing before you submit#

At the bottom of App details is Development store. Install your app on one of your development stores and walk the merchant experience yourself before sending it to review.

Plans#

Public plans and private plans sit on separate tabs. You can offer up to eight public plans.
Each plan is Free, Recurring or Usage-based, and takes a name and description in both languages (300 characters each) plus 1 to 5 features, where every feature row has an Arabic and an English variant. If you charge by consumption, read Usage-based plans first β€” an app cannot mix usage-based and recurring plans. Custom pricing for a single merchant is covered in Private plans.
See Creating a plan for every field and limit, and Plans and pricing for choosing between the models. Before review, your app needs either a free plan or a paid plan with a free trial so reviewers can test it.

Webhooks#

Events are organised into webhook groups. Each group sends every event you select to the same HTTPS endpoint with the same headers.
See Subscription and app events for the full event list, when each one fires, and both payload shapes.

Step 4: Submit#

The Publish tab shows your current status and the submit button. Zid's description of what happens next:
When you're ready, send this app to our reviewers. They will check the listing details, scopes, and webhooks before publishing it to the App Market.
Your app moves through these states:
StateMeaning
DraftNot yet submitted. Only you can see it
Request to publishSubmitted, waiting for review
PublishedLive in the market
RejectedNot approved. Zid sends you the reason
UnpublishedWas live, now withdrawn
You can pull a published listing back to draft at any time to make changes.

Part 3: What reviewers check#

Reviewers work through the same nine checks on every app.

1. Names#

Your Arabic and English names must each read as a real product name in that language. A placeholder, an internal code name, or a name that is really a company abbreviation will be sent back β€” this includes the developer name, which merchants see on your listing.

2. URLs#

Every URL has to be a real, public, production address.
No test or staging hosts. A redirect or installation URL pointing at a sandbox, a proxy, or a -test hostname is rejected.
The privacy policy must be a real privacy policy page. A link to a chat app, a social media profile, or a PDF in a file-sharing folder does not qualify.
Everything must still resolve over HTTPS with current TLS at review time, not only when you first saved it.

3. Screenshots#

Arabic screenshots are required. Reviewers look for screenshots that show your app actually working inside the merchant's dashboard β€” not a marketing banner, not your own website, not an empty state.

4. Category#

Your category must match what the app does, because it determines where merchants find you.

5. Descriptions#

Both descriptions must explain, in their own language, what a merchant does with your app. Two common rejections:
One vague sentence per language that never says how the app is used.
A description that promises features your app cannot deliver, because the scopes for them were never requested. Reviewers read your description against your scopes β€” if you describe pushing products and stock, you need the matching write scopes.
Also check the small things: a description that begins with a stray character, or an Arabic field containing English, gets flagged.

6. Scopes#

This is the most common cause of rejection. Reviewers compare every scope against your features. Requesting write access for a read-only app, or scopes for features you do not have, fails the review. Justifying your scopes covers what your description has to show.
A read-only analytics app requesting write scopes across the platform will be rejected outright.

7. Plans#

Your pricing must match what you charge everywhere else.
If your app is sold on other platforms, or priced on your own website, your Zid plans must match that pricing. A different price on Zid is not accepted.
Also checked:
Every plan has a description in both languages. An empty English plan description is a rejection.
No stray characters at the start of a plan name or description.
No leftover test plans in the list.
Creating a plan lists every field and limit.

8. Webhook events#

A paid app with no webhook subscriptions gets questioned, because it has no way to know when a merchant's subscription changes. Reviewers look for the full subscription lifecycle, not just the happy path β€” an app that handles only activation, renewal and expiry, but ignores suspension, warning, upgrade and refund, will be asked to complete the set.
Free apps are not expected to subscribe to subscription events. The full list, with the timing of each event, is in Subscription and app events.

9. Bank account and agreement#

Bank account present, with tax status matching the uploaded document.
Partnership agreement signed.
Commercial terms agreed with your partnership manager.

10. Your OAuth and activation flow#

Reviewers install your app on a test store and walk it exactly as a merchant would. How your app connects is as reviewable as what your listing says, and it is a frequent cause of rejection β€” the full rules are in Public Apps OAuth Requirements.
Your app must start OAuth the moment the merchant clicks Activate. Any paid Zid plan is settled before that point, so nothing should stand between Activate and the consent screen.
Three flows are rejected outright:
Rejected flowWhat to do instead
Signup or login before OAuth β€” the merchant hits your registration form before they ever see Zid's consent screenStart OAuth immediately, then link the account after the callback
Generic homepage or manual discovery β€” the merchant lands on your marketing site or settings area and has to go hunting for the Zid integrationOpen OAuth directly, or your approved dedicated setup journey
Manual credentials or manual store identification β€” asking the merchant to paste tokens, API keys, client secrets, a Store ID or a store URLIdentify the store automatically through OAuth and exchange the code on your server
Also checked while the reviewer walks your app:
The connection survives setup. The verified store must not switch or get lost during signup, login, configuration or account linking, and the merchant must never have to restart activation to recover it.
Accounts are never linked on a matching email alone. Authenticate the external account and confirm the store-to-account association explicitly.
Nothing leaks. Access tokens, refresh tokens, client secrets and authorization codes must stay off page content, URLs, client-side storage, analytics and logs.
"Ready" means ready. Don't show a service-ready state, or start background syncing, while mandatory setup is still incomplete.
Denial is handled. If the merchant cancels, your callback is never called at all β€” Zid returns them to their dashboard with an error_code. Treat "activation started, no callback arrived" as a normal outcome, and make sure a retry doesn't create a duplicate connection.
Two implementation details that fail reviews quietly:
The authorization code lasts 10 minutes and works once. Exchange it inside the callback request. Queuing it for a background worker, or retrying after a failed exchange, both break.
PKCE is not supported. Zid's Authorization Code flow is for confidential clients. code_challenge and code_verifier are ignored, so your protection against request forgery is the state parameter β€” generated per request, bound to the session, and validated before you accept the callback.
And one that breaks apps after they go live: when you add a scope, each merchant re-approves by deactivating and reactivating your app. That issues a new token pair for a store you already have. If your app treats a known store as a duplicate install and discards the new tokens, it stays broken β€” and to the merchant it looks like the re-approval simply failed.
If your service genuinely needs setup before a store can be connected, there is an exception path β€” Partner-managed setup β€” but it needs Zid's prior written approval. Removing your Zid plans does not grant it.

Errors the dashboard will show you#

Some problems are caught before you ever reach a reviewer. The three you are most likely to meet:
"The justification must be at least 50 characters." β€” your scope description is too short. The counter under the field shows your length out of 200.
"URL must start with https://." β€” every URL field rejects plain HTTP inline, before saving.
"Add at least one screenshot." β€” saving App details is blocked until you have at least one Arabic screenshot.
Beyond these, each URL is checked live over TLS 1.2 or 1.3 with a five-second timeout when you save. A URL that is unreachable, or serving an expired or outdated certificate, fails.

Common reasons apps get rejected#

In rough order of how often they come up:
1.
Scopes that do not match the app. Write access on a read-only app, or scopes for features that do not exist.
2.
An activation flow that does not start with OAuth β€” a signup gate, a generic homepage, or a form asking the merchant to paste credentials.
3.
Unsigned partnership agreement.
4.
Test or non-production URLs in the redirect or installation fields.
5.
A privacy policy that is not a privacy policy β€” a chat link, a social profile, a shared file.
6.
Thin descriptions that never explain how a merchant uses the app.
7.
Pricing that differs from the partner's own website or another platform.
8.
Missing plan descriptions, usually the English one.
9.
Incomplete webhook coverage on a paid app.
10.
Stray characters at the start of a name or description, or the wrong language in a language-specific field.
11.
Missing or mismatched bank and tax details.

Before you submit#

Partnership details complete, with documents uploaded
Partnership officer details are up to date, and the email is one you actually monitor β€” it is how Zid reaches you about the review
Bank account saved, and your VAT answer matches the certificate you uploaded
Partnership agreement signed
Both app names read as real product names, and so does the developer name
Every URL is production, HTTPS, and live
Privacy policy is a real policy page
At least one support channel: phone number or support URL
Arabic screenshots show the app working inside the dashboard
Both descriptions explain how merchants use the app
Every scope is used by a feature that exists today
Plan prices match your website and any other platform you sell on
Every plan has an Arabic and English description
A free plan or a free trial exists so reviewers can test
Webhook events cover the whole subscription lifecycle
Activation starts OAuth immediately β€” no signup gate, no homepage detour, no pasted credentials
A cancelled authorization, a retry and a reinstall all leave your app in a correct state
Reactivation after a scope change overwrites the stored tokens instead of discarding them
No test plans, test URLs or placeholder text anywhere

Documentation you'll need#

Before you build
Start Here β€” the platform in overview
Create your First App β€” the walkthrough
Connecting your app
Public Apps OAuth Requirements β€” the activation and security rules reviewers apply
Authorization β€” the OAuth technical reference
OAuth Errors & Troubleshooting β€” error codes, denial handling, the consent lifecycle
Zid Bridge Tool β€” test your authorization flow before going live
Pricing and billing
Plans and pricing β€” the models available and how to choose
Creating a plan β€” every field and limit
Usage-based plans β€” charging for consumption
Private plans β€” custom plans for one merchant
Subscription Details β€” read a merchant's current subscription
Update Usage-Based Charges β€” post a usage charge
Scopes and permissions
Justifying your scopes β€” what reviewers expect in your description
Reacting to merchants
Subscription and app events β€” install, uninstall and the subscription lifecycle
Webhooks β€” store data webhooks, which are a separate system
Building the experience
Embedded Apps β€” running inside the merchant dashboard
StoreFront Events β€” hooks available on the storefront
Zid MUI β€” Zid's component library
Zid SDKs β€” official client libraries
Working with the APIs
Responses β€” the response envelope and error shapes
Rate Limiting β€” the limits your app has to respect
Merchant APIs β€” everything your app can read and change
Modified atΒ 2026-10-21 16:09:45
Previous
Justifying your scopes
Next
Plans & billing
Built with