Zapier — connect and automate
[TODO i18n — see issue #76] "Automate data ingestion from any app into AACsearch with Zapier. Thousands of supported apps."
Zapier — connect and automate
Zapier lets you automatically push data from popular apps (Google Sheets, Shopify, Stripe, Mailchimp, and others) into AACsearch — no code required.
What is Zapier? Zapier is a service that connects different apps and automates workflows. For example, when a new row is added to Google Sheets, Zapier can automatically load that product into AACsearch.
Requirements
- A Zapier account (free or paid)
- An AACsearch account with an index created
- An API key for ingestion (scope
ingest)
Step 1: Create an ingest API key
In AACsearch create a dedicated key for Zapier:
- Open Search → API keys
- Click Create key
- Name it: Zapier Integration
- Pick scope: Ingest (for uploading documents)
- Pick the index: products (or another)
- Click Create
- Copy the key and store it (it will not be shown again)
The key looks like: ss_ingest_abc123def456
Never share this key. Store it only inside Zapier or in a secure location.
Step 2: Create a Zap in Zapier
Open Zapier and create a new Zap
- Go to zapier.com
- Click Create
- Pick Zap → Create a new Zap
Pick a trigger (the event that starts the action)
A trigger is the event that starts the automation. Pick one of the options:
Option 1: Google Sheets (recommended)
- App: Google Sheets
- Trigger: New Spreadsheet Row
- Pick the Google account
- Pick the spreadsheet with products
Option 2: Shopify
- App: Shopify
- Trigger: New Product
- Pick your Shopify store
Option 3: Stripe
- App: Stripe
- Trigger: New Product
- Pick the Stripe account
Option 4: WooCommerce
- App: WooCommerce
- Trigger: New Product
- Provide your store URL and API keys
After picking the trigger click Continue.
Test the trigger
Zapier will ask you to test the trigger:
- Click Test Trigger
- Zapier will pull data from your source (a row from Google Sheets, a product from Shopify, etc.)
- You will see a sample payload
- Click Continue if the data looks right
Step 3: Pick the action (what Zapier does)
The action is what Zapier should do when the trigger fires.
- Click + → Action
- Find and pick Webhooks by Zapier (in case AACsearch is not in the list yet)
- Action: POST
- Click Continue
Step 4: Configure the webhook to load into AACsearch
Fill the request fields
| Field | What to enter |
|---|---|
| URL | https://app.aacsearch.com/api/v1/indexes/{INDEX_ID}/documents |
| Method | POST |
| Data Pass-Through | Off |
Where to find INDEX_ID
- In AACsearch open Search → Indexes
- Click the index you need
- In the browser URL you will see:
https://app.aacsearch.com/[ORG]/search/[INDEX_ID] - Copy
INDEX_ID
Example URL:
https://app.aacsearch.com/api/v1/indexes/65f8d2e1c9a2b3f4e5g6h7i8/documentsAdd headers
Click + Add Header and add two headers:
| Header | Value |
|---|---|
Authorization | Bearer ss_ingest_abc123def456 (your API key) |
Content-Type | application/json |
Add the request body
Open the Body tab and pick the JSON format.
Build the document array depending on your source:
For Google Sheets:
[
{
"id": "row_123",
"title": {{ 65f8d2e1c9a2b3f|Column_1 }},
"description": {{ 65f8d2e1c9a2b3f|Column_2 }},
"price": {{ 65f8d2e1c9a2b3f|Column_3 }},
"category": {{ 65f8d2e1c9a2b3f|Column_4 }}
}
]For Shopify:
[
{
"id": {{ 65f8d2e1c9a2b3f|Product_ID }},
"title": {{ 65f8d2e1c9a2b3f|Product_Title }},
"description": {{ 65f8d2e1c9a2b3f|Product_Body_HTML }},
"price": {{ 65f8d2e1c9a2b3f|Product_Price }},
"category": {{ 65f8d2e1c9a2b3f|Product_Type }},
"image": {{ 65f8d2e1c9a2b3f|Product_Image_URL }}
}
]For WooCommerce:
[
{
"id": "{{ 65f8d2e1c9a2b3f|Product_ID }}",
"title": "{{ 65f8d2e1c9a2b3f|Product_Title }}",
"description": "{{ 65f8d2e1c9a2b3f|Product_Description }}",
"price": {{ 65f8d2e1c9a2b3f|Product_Price }},
"category": "{{ 65f8d2e1c9a2b3f|Product_Category }}"
}
]Numbers (price) go WITHOUT quotes around {{ }}, text fields (title) keep the quotes.
Step 5: Test the webhook
- Click Test Action
- Zapier will send a test request to AACsearch
- If it errors, double-check:
- ✓ The API key is copied correctly (no extra spaces)
- ✓ The URL has the correct INDEX_ID
- ✓ Both headers are filled (Authorization, Content-Type)
- ✓ The JSON is valid (use jsonlint.com to verify)
A successful response looks like:
{
"documentCount": 1,
"status": "queued"
}Step 6: Turn on the Zap
- Give the Zap a name (e.g. Google Sheets → AACsearch)
- Click Publish
- Zapier will run this Zap on every new trigger
Integration examples
Google Sheets → AACsearch
When a new row is added to Google Sheets Then the product is loaded into AACsearch
Sheet structure:
| Title | Description | Price | Category |
|----------|-------------------|-------|----------|
| Sneakers | Sport shoes | 5000 | Footwear |
| Shirt | Cotton shirt | 3000 | Apparel |Zap structure:
- Trigger: Google Sheets → New row
- Action: Webhooks → POST to AACsearch
Shopify → AACsearch (sync every 5 minutes)
When a new product is created in Shopify Then the product is loaded into AACsearch
Settings:
- Schedule: Every 5 minutes
- Trigger: Shopify → New product
- Filter: Only products with price > 0
- Action: Webhooks → POST
Stripe customers → AACsearch
When a new customer is added in Stripe Then the customer is loaded into the "customers" index
Body:
[
{
"id": "{{ 65f8d2e1c9a2b3f|Customer_ID }}",
"name": "{{ 65f8d2e1c9a2b3f|Customer_Name }}",
"email": "{{ 65f8d2e1c9a2b3f|Customer_Email }}",
"created_at": "{{ 65f8d2e1c9a2b3f|Created_At }}"
}
]Mailchimp subscribers → AACsearch
When a new subscriber is added in Mailchimp Then the subscriber is loaded into the "subscribers" index
Body:
[
{
"id": "{{ 65f8d2e1c9a2b3f|Subscriber_ID }}",
"email": "{{ 65f8d2e1c9a2b3f|Email }}",
"name": "{{ 65f8d2e1c9a2b3f|First_Name }} {{ 65f8d2e1c9a2b3f|Last_Name }}",
"status": "{{ 65f8d2e1c9a2b3f|Status }}"
}
]Advanced features
Updating existing documents
If a document with the same id already exists, it will be updated:
[
{
"id": "product_123",
"title": "New product name",
"price": 6000
}
]AACsearch will update the product instead of creating a duplicate.
Filtering data before ingestion
You can add a Zapier filter to load only specific products:
- Between Trigger and Action add a Filter
- Condition:
Price > 100orCategory = "Footwear" - Only items matching the condition are loaded
Schedule instead of real-time
If you don't need real-time sync, use a schedule:
- In Trigger pick Schedule instead of an app trigger
- Frequency: Every day at 9am
- The action will run on schedule
Monitoring and debugging
Check Zap logs
- In Zapier open your Zap
- Switch to the Run history tab
- Click a run
- You will see the input data, the request, and the response
Common errors
| Error | Cause | Fix |
|---|---|---|
401 Unauthorized | Wrong API key | Re-copy the key from AACsearch |
404 Not Found | Wrong INDEX_ID | Check the URL in your browser |
400 Bad Request | Invalid JSON | Validate the syntax at jsonlint.com |
429 Too Many Requests | Too many requests | Add a delay between runs or use a schedule |
Enable logging
For debugging complex Zaps add a Formatter before the Action:
- Between Trigger and Action add Action → Formatter
- Event: Text → JSON
- Input: (your JSON)
- This helps you see how the data is transformed
Zapier limits
| Limit | Free plan | Paid plan |
|---|---|---|
| Tasks per month | 100 | Depends on plan |
| Speed | At least 1 minute between runs | Real-time |
| History | 7 days | 90 days |
| Zaps | Up to 5 Zaps | Unlimited |
If you exceed the limit, Zapier will pause your Zap. Upgrade for more headroom.
Alternatives to Zapier
If Zapier is not for you, try one of these alternatives:
- Make (Integromat) — more powerful and cheaper
- Integrately — easier for beginners
- Pabbly Connect — the cheapest
- Custom script — Python, Node.js, or Go for full control
Frequently asked questions
Q: Do I need Zapier for sync? A: No. If you are a developer you can write your own script in Python or Node.js. Zapier is for non-technical users.
Q: Can I update existing products via Zapier?
A: Yes. Sending a document with the same id updates it.
Q: How often does Zapier check for updates? A: Free plan — every 15 minutes. Paid plans — every 1–5 minutes (depending on the plan).
Q: What if the source has a different structure? A: Use Formatter in Zapier to transform the data into the expected shape.
Q: Can I upload images via Zapier?
A: Yes, by sending the image URL in the image field. AACsearch will download and store the image automatically.
Q: How do I delete products from AACsearch via Zapier?
A: Use a DELETE request instead of POST. URL: https://app.aacsearch.com/api/v1/indexes/{INDEX_ID}/documents/{DOC_ID}.
Help and support
PostgreSQL-Synchronisation
Synchronisieren Sie Ihre PostgreSQL-Tabellen in Echtzeit mit der AACsearch Engine mittels pg_notify, Polling oder logischer Replikation.
Gehostetes Such-Widget
Das AACsearch-Widget mit einem einzigen Script-Tag in Ihren Storefront einbetten. Vanilla JS, Shadow DOM, fünf Locales.