How it works

The life of a project and its listings, every status, how long it takes, and the words these docs use.

The life of a project

  1. Draft. You create a project from your client's URL and we fill in the name, tagline and short description from the site. You add a logo, 1 to 5 screenshots and a contact email; a draft costs nothing and you can delete it.
  2. Launch. The launch uses 1 launch from your balance and gives the project an allowance of 100 directories. It creates one listing per directory picked, each in pending.
  3. Listings move. Each listing is prepared, sent to its directory and reviewed there. Most listings go live within a week.
  4. Completed. The project is completed when no listing is pending, in_progress or action_required and nothing is left to add. Listings in submitted can still go live after that.

A launched project stays: it cannot be deleted, and its contact_email can no longer change.

Listing statuses

StatusWhat it meansWhat you do
pendingWaiting to start. Up to 100 of your listings are in progress at once; the rest wait here.Nothing.
in_progressBeing prepared and sent to the directory.Nothing.
action_requiredWaiting on you or your client; action says what.Follow action.
submittedThe directory has the listing and is reviewing it.Nothing.
livePublished. live_url points to the listing.Share it with your client.
not_acceptedThe directory declined it, could not take it, or took it down; reason says which.Nothing: its place in the allowance comes back.
cancelledWithdrawn before it reached the directory.Nothing: its place in the allowance comes back.

The usual path is pending → in_progress → submitted → live. A listing can go from in_progress to action_required and back, and some listings go live without submitted.

Corrections

Rarely a status changes after it looked final, and each change sends its own event:

  • live → not_accepted with reason removed, when a directory takes a listing down.
  • live → submitted, when a published listing goes back under review.
  • not_accepted or cancelled → pending, in_progress, submitted or live. The listing keeps its lst_ id.

To keep your records right, store the status of each event as it arrives. Do not assume that live, not_accepted or cancelled are the end.

Project statuses

When more than one fits, the first in this list wins.

StatusWhen
on_holdWork is paused. hold_reason is review while we review the project, which clears without action from you, or paused.
action_requiredYou or your client need to act; action says what.
in_progressListings are moving and nobody needs to act.
completedNo listing is pending, in_progress or action_required, and nothing is left to add.
draftNot launched yet.

Actions

A project or a listing in action_required carries an action with a code and the side it waits on in waiting_on.

  • install_badge waits on your client. Some directories list a product only while their badge shows on its site: forward client_message to your client as it is, then verify the badge.
  • add_assets waits on you. The project needs a logo or a screenshot.

New codes can appear. For a code you do not know, show client_message, or a general prompt when it is null.

Timing

Most listings go live within a week. Each directory reviews on its own schedule, and the listing shows submitted while it waits.

Up to 100 of your listings are in progress at once, across all your projects. Above that, new listings wait in pending and start as others finish; a launch is accepted either way. GET /account shows the count in capacity.

Listing times (created_at, submitted_at, live_at) are rounded down to the hour. An event's created_at is exact to the second and comes within about a minute of the change.

In test mode the same life takes about 15 minutes, and nothing reaches a directory: see Test mode. Every change is an event you can read from GET /events or receive as a webhook.

The allowance

Each launch covers up to 100 directories for one project. The allowance counts them in total, used, reserved and available.

  • A listing in pending, in_progress or action_required reserves its place.
  • A listing that reached its directory, submitted or live, uses its place.
  • A listing that ends not_accepted or cancelled gives its place back, and POST /projects/{project_id}/listings adds directories from the available places.

With auto_replace on, we add fitting directories from the available places for you: after a listing ends not_accepted or cancelled, after the badge passes verification, and when a new directory joins the catalog. New projects start with it on, and a launch with include turns it off.

Glossary

TermMeaning
ProjectOne of your client's products, from draft to its last listing. Ids start with prj_.
LaunchWhat you buy: 1 launch starts 1 project on up to 100 directories. Your balance is in GET /account.
AllowanceThe 100 directories a launch covers for its project, and how many are used, reserved and available.
ListingOne project at one directory, with its status and, once published, its live_url. Ids start with lst_.
DirectoryA site that lists products, such as BetaList or SaaSHub. Ids start with dir_; GET /directories is the catalog.
Domain RatingA 0 to 100 score of a site's backlink profile, measured by Ahrefs. Directories and projects carry it as domain_rating.
EventOne recorded change to a project, listing or report. Ids start with evt_, and the feed keeps 90 days.
Test modeEvery call made with a sbm_test_ key: test data, listings that move on their own, nothing spent.
Webhook endpointAn HTTPS URL of yours that receives events as they happen. Ids start with we_.