Track directory submissions without losing the history
Keep attempted, submitted, approved, live and indexed apart, with a dated history for every directory, saved in your browser and exported as CSV.
Quick answer
A useful directory tracker must distinguish an attempted form from a submitted record, a submitted record from an approved listing, and a published listing from an indexed page. Zaptool keeps those states separate. The tracker below stores each row in your browser, adds a dated line to its history at every status change, and records indexing as a separate observation rather than a status.
Submission tracker
Add rows by hand, or load the verified directories from the snapshot (name, domain, submit page and check date only), then set a status as each one moves.
| Directory | Submit page | Route last verified | Existing listing | Status | Status date | Evidence URL | Indexed (seen on) | Next action | Notes | History | Checks | Remove |
|---|
| Directory | Submit page | Status | Status date | Evidence URL | Indexed (seen on) | Next action | History |
|---|---|---|---|---|---|---|---|
| Example Directory | https://directory.example/submit | Live | 2026-10-06 | https://directory.example/p/example-app | Not recorded | Check listing text after the price change | 2026-10-01 Submitted; 2026-10-03 Pending review; 2026-10-06 Live |
Saved only in this browser (localStorage) as you type. Nothing is uploaded or sent, and there is no account. Export to keep a copy or move it to another device; Clear deletes it from this browser.
Status definitions
Each row has one status at a time. The list follows the usual order of a submission, but a directory can skip or repeat steps, so the tracker accepts any change and keeps the history.
- Not started
- On your list; nothing has been done yet.
- Queued
- Chosen for the next batch; not submitted yet.
- Submitted
- You sent the directory's form or listing request and have a confirmation: an on-screen message, an email or a record in your account there. Submitted says nothing about approval.
- Pending review
- The directory has the submission and has not decided yet.
- Needs your action
- The directory is waiting on you: a confirmation link, a missing field, a sign-in or a payment decision.
- Approved
- The directory told you it accepted the listing. An approved listing may not be public yet.
- Live
- You opened the public listing page yourself and saw the product on it. Keep that page's URL.
- Rejected
- The directory declined the listing. Keep its reason in Notes.
- Blocked
- You could not go on: the route needed something you decided against, such as a payment, a badge or an owner-only step, or the form did not work.
- Duplicate
- Not submitted because the product is already listed or already pending there. Keep the existing listing's URL.
Indexed and cited are observations, not statuses
Two things happen outside the directory, so they are recorded as dated observations instead of statuses:
- Indexed
- A search engine showed the listing page in its results when you checked, on a date you record. Live does not mean indexed, and a page can drop out of results later.
- Cited
- An AI assistant's answer showed a page as a source when you ran a test, on a date you record. Being live or indexed does not mean a page will be cited.
Record indexing in the Indexed (seen on) column. Citations in AI answers are measured with the AI mention worksheet, which uses the same definitions.
How to avoid duplicate submissions
Before you queue a directory, check whether the product is already listed or pending there, under its current name, an old name or another domain, and record the result in the Existing listing column. The tracker warns when a row with a pre-existing or pending listing is moved to Queued or Submitted. If the product is already listed or pending there, set the row to Duplicate instead of submitting again, and keep the existing listing's URL in Evidence URL.
The Existing listing column takes these values:
- Not checked
- You have not looked yet.
- Unknown
- Not determined. It stays Unknown when a search finds nothing: a search that finds nothing is not proof that the product is not listed.
- Pre-existing
- You found a public listing for the product on this directory. Keep its URL.
- Pending
- A submission was sent and has no decision or public listing yet, according to your records, your email or your account on the directory.
- Draft
- A listing was started on the directory, for example saved in your account there, and not submitted.
Search each directory for every name and domain the product has used: current and earlier names, spelling variants, every domain including old ones that now redirect, and the company name. Use the directory's own search box or a site search: site: followed by the directory's domain and your names and domains in quotes, joined with OR. Pending and draft submissions are not public, so check your own records, email and accounts on the directory as well.
What to do with the result:
- Skip: Pre-existing with correct facts, or Pending.
- Update: Pre-existing under an old name, an old domain or an out-of-date pricing model. Use the directory's edit, claim or contact route; a second listing is not a fix.
- Submit: Unknown after you searched every variant and checked your own records, knowing a listing may still exist unseen.
Track pending reviews and follow-up
Pending review means the directory has the submission and has not decided. This site has no record of review times, so the tracker does not predict one; it keeps the dates you enter.
- Set a Next action with a date you choose, such as “check the listing page on a given date”.
- When a directory asks for something (a confirmation link, a missing field), set Needs your action and put the request in Notes.
- When you see the listing, set Live and paste the listing page into Evidence URL; the Checks column flags Live or Approved rows without one.
- Check indexing separately: search for the listing page and enter the date you saw it. A live listing that is not indexed yet is still live.
Every status change adds a dated line to the row's History, so a directory that rejected one attempt and accepted the next keeps both.
Import an existing spreadsheet
Save the spreadsheet as CSV with a header row and import it. Columns are matched by name, so rename yours to the names below (capitals and spaces do not matter); Name, URL, Date and Note are also understood. Other columns are ignored, and rows are matched to your list by domain or by the submit page's host. The header the tracker reads and writes:
directory,domain,submit_url,last_checked,listing_check,status,status_date,evidence_url,indexed_seen,next_action,notes,history- Status values are the codes in the table below; any other value is imported as NOT_STARTED.
- A row that matches one already in the list only fills that row's blank fields. Nothing you entered is overwritten.
- The file is read in this browser. It is not uploaded.
| Code | Status |
|---|---|
NOT_STARTED | Not started |
QUEUED | Queued |
SUBMITTED | Submitted |
PENDING | Pending review |
NEEDS_ACTION | Needs your action |
APPROVED | Approved |
LIVE | Live |
REJECTED | Rejected |
BLOCKED | Blocked |
DUPLICATE | Duplicate |
Export and backup
Export writes every row, with its history, to a CSV file you can open in a spreadsheet or import again, here or on another device. The tracker lives in this browser's storage, so clearing site data, a private window or another browser starts with an empty list: export at the end of each session.
Cells that begin with =, +, - or @ are exported with a leading apostrophe so that a spreadsheet does not run them as formulas; importing the file here removes it again.
Loaded directories come from the snapshot: 323 verified directories, 172 of them with an open route. Four directories that the snapshot records as open are held back until re-checked. Their route and check date are as recorded then; confirm each route before you rely on it.
FAQ
What statuses should a directory tracker use?
Statuses that separate what you did from what the directory did: Not started, Queued, Submitted, Pending review, Needs your action, Approved, Live, Rejected, Blocked and Duplicate. Indexing is a dated observation, not a status.
How do I track pending approvals?
Set Pending review with its date, add a next action with the date you plan to check, and change the status when the directory answers. The history keeps every change.
What counts as a duplicate?
A second listing request for a product that already has a listing or a pending request on the same directory, including under an old name or another domain. Mark the row Duplicate instead of submitting again.
Should I track live URL and indexing separately?
Yes. Live means you saw the public listing page; indexed means a search engine showed that page when you checked. A listing can be live without being indexed, so they are separate columns.
Can I use the tracker for multiple products?
One tracker holds one list. For a second product, export the first list, clear it and start again, or use another browser profile; importing the file brings a list back.
Where is my tracker data stored?
In this browser's local storage only. Nothing is uploaded and there is no account; Clear deletes it.
Last verified · Snapshot date · Snapshot ID zt-dir-20260927-cad0c427