---
title: "Publishing to Stripe App Marketplace | Tajo"
description: "Step-by-step guide to preparing, submitting, and publishing your Stripe App to the marketplace"
url: https://tajo.io/docs/stripe-apps/publish-app/
markdown: https://tajo.io/docs/stripe-apps/publish-app.md
lang: en-US
author: "Set Noa"
author_url: https://tajo.io/set-noa/
---

# Publishing to Stripe App Marketplace

[Set Noa](https://tajo.io/set-noa/)

Publishing your Stripe App to the marketplace makes it available to all Stripe users. This guide covers the requirements, preparation steps, and submission process.

Caution

**Status: planned, not built.** Tajo has no Stripe App, so nothing in this section can be installed today. The app identifiers, URLs and credentials on this page are illustrative placeholders, not live endpoints.

## Prerequisites

Before you can publish an app to the Stripe App Marketplace, you must meet these requirements:

- **Activated Stripe account**: Your account cannot be restricted to test mode only
- **One app per account**: Each Stripe account can only publish one public app to the marketplace
- **English only**: All app content, UI text, and listing information must be in English
- **Completed app**: Your app must be fully functional and tested

Caution

If you need to publish multiple apps, you must create separate Stripe accounts for each one.

## Publishing Steps

### Step 1: Update Your Manifest

Set the `distribution_type` in your `stripe-app.json` to `public`:

```json
{
  "id": "com.tajo.brevo-integration",
  "version": "1.0.0",
  "name": "Tajo Brevo Integration",
  "icon": "./icon.png",
  "distribution_type": "public",
  "permissions": [
    {
      "permission": "customer_read",
      "purpose": "Sync customer data to Brevo contacts"
    },
    {
      "permission": "customer_write",
      "purpose": "Update customer metadata with Brevo sync status"
    },
    {
      "permission": "event_read",
      "purpose": "Track payment and subscription events for Brevo automation"
    }
  ]
}
```

### Step 2: Prepare Your App

Ensure your app meets all [review requirements](https://tajo.io/docs/stripe-apps/review-requirements) before submitting:

1. Test thoroughly in both live and sandbox modes
2. Verify all permissions are necessary and documented
3. Confirm error handling and loading states are implemented
4. Check that all UI text is in English

### Step 3: Upload Your App

Use the Stripe CLI to upload your app:

```bash
# Upload your app to Stripe
stripe apps upload

# Verify the upload
stripe apps versions list
```

### Step 4: Write Your Listing

Navigate to the Stripe Dashboard to complete your app listing. All listing fields are required for marketplace submission.

### Step 5: Submit for Review

After completing your listing, submit the app for review through the Stripe Dashboard. The Stripe team will evaluate your app against the [quality requirements](https://tajo.io/docs/stripe-apps/review-requirements).

### Step 6: Publish

Once approved, you can publish your app to make it available on the marketplace.

## Manifest Setup for Public Distribution

The manifest must include `distribution_type: "public"` and declare all required permissions with clear purpose descriptions:

```json
{
  "id": "com.tajo.brevo-integration",
  "version": "1.2.0",
  "name": "Tajo for Brevo",
  "icon": "./assets/icon.png",
  "distribution_type": "public",
  "stripe_api_access_type": "oauth",
  "allowed_redirect_uris": [
    "https://tajo.io/stripe/callback"
  ],
  "permissions": [
    {
      "permission": "customer_read",
      "purpose": "Read customer profiles to sync with Brevo contacts"
    },
    {
      "permission": "customer_write",
      "purpose": "Write sync metadata to customer records"
    },
    {
      "permission": "charge_read",
      "purpose": "Access payment data for Brevo event tracking"
    },
    {
      "permission": "event_read",
      "purpose": "Read Stripe events so a sync picks up changes"
    },
    {
      "permission": "product_read",
      "purpose": "Sync product catalog to Brevo for campaign personalization"
    },
    {
      "permission": "invoice_read",
      "purpose": "Track invoice events for Brevo transactional emails"
    }
  ],
  "ui_extension": {
    "views": [
      {
        "viewport": "stripe.dashboard.customer.detail",
        "component": "CustomerDetailView"
      },
      {
        "viewport": "stripe.dashboard.home.overview",
        "component": "OverviewView"
      }
    ]
  },
  "post_install_action": {
    "type": "onboarding"
  }
}
```

Upload the configured app with:

```bash
stripe apps upload
```

## Listing Requirements

Your app listing must include all of the following fields:

| Field | Requirements | Details |
| --- | --- | --- |
| **Name** | Max 35 characters | The display name shown on the marketplace |
| **Icon** | 300x300 pixels, PNG or SVG | Square icon, no rounded corners (Stripe adds them) |
| **Built by** | Company or developer name | Displayed below the app name |
| **Category** | Select from Stripe’s categories | Choose the most relevant category for your app |
| **Subtitle** | Max 80 characters | Brief tagline shown in search results |
| **About** | Max 1,000 characters | Detailed description of what your app does |
| **Key Features** | Up to 5, with images | Highlight main features with screenshots or diagrams |
| **Pricing** | Free, paid, or freemium | Clearly state pricing model and any costs |
| **Support** | Contact URL or email | Where users can get help with your app |
| **Privacy Policy** | URL to privacy policy | Required legal document for data handling |

### Name Guidelines

- Must be unique on the marketplace
- Should clearly identify your app’s purpose
- Avoid generic terms that could confuse users
- Example: “Tajo for Brevo” (15 characters)

### Icon Guidelines

- Dimensions: exactly 300x300 pixels
- Format: PNG or SVG
- Do not add rounded corners, Stripe applies them automatically
- Use a clear, recognizable logo or symbol
- Ensure legibility at small sizes

### About Section

Write a compelling description that covers:

- What problem your app solves
- Key integration capabilities
- Who the app is designed for
- Any prerequisites or requirements

Example:

> Tajo for Brevo connects your Stripe payment data with Brevo’s marketing automation platform. Automatically sync customers, track payment events, and trigger personalized email, SMS, and WhatsApp campaigns based on purchase behavior. Built for ecommerce businesses that want to maximize customer lifetime value through data-driven retention marketing.

### Key Features

Each key feature entry includes:

- **Title**: Short feature name
- **Description**: One to two sentences explaining the feature
- **Image**: Screenshot or diagram (recommended 1600x900 pixels)

Recommended features for the Tajo Brevo integration:

1. **Customer Sync**, Automatically sync Stripe customer profiles to Brevo contacts with full purchase history
2. **Event-Driven Automation**, Trigger Brevo workflows from Stripe events like successful payments, subscription changes, and refunds
3. **Product Catalog Sync**, Keep your Brevo product catalog in sync with Stripe for personalized campaign content
4. **Multi-Channel Campaigns**, Use synced data to power targeted email, SMS, and WhatsApp campaigns
5. **Dashboard Insights**, View Brevo engagement metrics directly in the Stripe Dashboard customer view

### Pricing Information

Clearly communicate your pricing model:

- **Free**: No cost to install or use
- **Paid**: State the price and billing frequency
- **Freemium**: Describe what’s included free and what requires payment
- **Usage-based**: Explain the pricing tiers or per-unit costs

## Testing Your App

Before submission, thoroughly test your app:

### Test in Sandbox Mode

```bash
# Start your app in test mode
stripe apps start --mode test

# Verify sandbox compatibility
stripe apps validate
```

### Test Credentials Format

When providing test credentials for the review team, use this format:

```
Test Account Credentials
========================
Platform: Tajo
URL: https://app.tajo.io/test
Email: reviewer@test.tajo.io
Password: [secure test password]

Brevo Test API Key: xkeysib-test-xxxxxxxxxxxx

Required Setup Steps:
1. Log in to the Tajo test account
2. Navigate to Settings > Integrations > Brevo
3. The Brevo API key is pre-configured
4. Install the Stripe App from the test link provided

Expected Behavior:
- Customer sync should begin within 60 seconds of installation
- Navigate to any Stripe customer to see Brevo contact data
- Create a test payment to verify event sync to Brevo
```

### Review Checklist

Before submitting, verify:

- App works in both live and test modes
- All permissions have clear purpose descriptions
- Error states are handled gracefully
- Loading states are shown for async operations
- No hardcoded test data in the production build
- Privacy policy URL is accessible and accurate
- Support contact information is valid
- All listing images meet dimension requirements
- App description accurately reflects functionality

## After Submission

The Stripe review team typically responds within 5-10 business days. They may:

- **Approve** your app for publication
- **Request changes** with specific feedback
- **Reject** the app if it doesn’t meet requirements

If changes are requested, address all feedback and resubmit. Each resubmission goes through the full review cycle.

## Updating a Published App

To update an already-published app:

1. Increment the version in `stripe-app.json`
2. Upload the new version: `stripe apps upload`
3. Submit the update for review
4. Once approved, the update is automatically deployed to all users

Tip

Minor bug fixes and non-functional changes may receive expedited review. Major feature additions or permission changes require full review.
