This guide explains how to connect Syrve to the Newo Platform to enable conversational AI-powered food delivery order taking, real-time order status checks, and automated menu synchronization for restaurants and delivery businesses. Once configured, the AI Employee can take delivery orders by extracting order details from conversation context, check order and delivery status by customer phone number, sync and cache the restaurant menu (including products, sizes, modifier groups, and pricing), look up customers in the Syrve loyalty system, route orders to the correct terminal group, and match menu items from conversation using fuzzy search against the Agent Knowledge Base (AKB).
Prerequisites
Before you begin, confirm that you have:
An active Syrve account with API access enabled
A Syrve API key (
apiLogincredential)At least one organization and terminal group configured in Syrve
Menu/nomenclature populated in Syrve
Get your Syrve API key
Log in to your Syrve management console.
Navigate to the API settings section.
Locate and copy your API key (the
apiLogincredential).Note your API region. The default endpoint is the EU region:
https://api-eu.syrve.live.
Create the Syrve project
Before configuring attributes, add the Syrve integration module to the customer's Builder. Follow the steps in Create a new project using these values:
Field | Value |
|
|
|
|
|
|
|
|
Ensure Auto update enabled is turned on, then click Create.
Once the project is created, click the three dots icon next to it and select Force Update Project to pull the latest module version.
Then click Publish all.
Set up Syrve attributes
Navigate to the Attributes page in the customer's Builder.
Type
syrvein the search field and select Show Hidden to display all related attributes.Set the following attributes based on the customer's requirements:
Attribute | Required | Default | Description |
| Yes | β | Syrve API key ( |
| No | API base URL. Override only if using a different regional endpoint. | |
| No |
| Menu cache TTL in seconds. Default is 24 hours. |
| No |
| Override SuperAgent attribute schemas on setup. |
Paste the Syrve API key into the
syrve_api_keyattribute and click Save.
ββ IMPORTANT
Do not modify the following attributes β they are populated automatically during setup and should not be edited manually: syrve_access_token, syrve_organization_id, syrve_terminal_group_id, syrve_delivery_menu.
Click Publish All.
On publish, the SetupFlow automatically:
Exchanges the API key for a session access token (
syrve_access_token)Discovers and stores the organization ID (
syrve_organization_id)Creates HTTP connectors for API and token operations
Registers order creation and status check tools with the agent
ποΈ NOTE
After publishing, verify that syrve_access_token is populated and syrve_organization_id has been discovered. If either is empty, confirm that syrve_api_key is correct and re-publish.
How menu synchronization works
At the start of every conversation (session_started), the integration checks whether the menu cache is current based on the configured TTL (default: 24 hours). If the cache is outdated, the integration:
Fetches the full menu from Syrve's nomenclature API.
Parses products with their sizes, prices, and modifier groups (deleted items are excluded).
Stores the result in the
syrve_delivery_menuattribute.Updates the AKB with product summaries using the label
syrve_menu.
This enables fuzzy product matching during subsequent ordering conversations. Menu synchronization can also be triggered manually using the syrve_get_menu_tool trigger.
ποΈ NOTE
Modifier group data (group names, required/optional flags, min/max counts, individual modifier prices) is included in the menu cache. However, modifier selection is not yet supported in the ordering pipeline β the modifiers array is sent empty when an order is created.
How order creation works
When a customer wants to place a delivery order, the agent follows this flow:
The LLM extracts order details from the conversation: customer first name, phone number, delivery address, items requested, and any comments.
The customer is looked up in Syrve's loyalty system by phone number.
Terminal groups are fetched for the organization, and the first available terminal group is selected for order routing.
Each requested item is fuzzy-matched against the cached AKB using the
syrve_menulabel (match threshold: 0.6).The delivery order is created in Syrve with
sourceKey: "voice-agent".The full order response from Syrve (order ID, status, items) is injected into the agent's prompt for reference in subsequent conversation turns.
Required customer information
Field | Required | Notes |
First name | Yes | Used in the order payload |
Phone number | Yes | Must be E.164 format; used for loyalty lookup |
Delivery address | Yes | Required for delivery order creation |
Last name | No | If omitted, the first name is copied to the last name field |
β οΈ CAUTION
This integration creates real orders in Syrve. Orders placed through the agent are submitted directly to the live POS system with sourceKey: "voice-agent". Use a test account or test conversation environment when validating the setup.
Key triggers
Trigger | Description |
| Fires when the agent needs to place a delivery order |
| Fires when the agent needs to look up order or delivery status |
| Auto-refreshes the menu cache if the TTL has expired |
| Manually triggers a menu refresh |
| Fires during setup to initialize the connection |
Supported features
Feature | Details |
Create delivery order | LLM payload extraction + fuzzy menu matching |
Check order status | Lookup by customer phone β order ID β delivery status |
Menu synchronization | Auto-cache with 24-hour TTL; includes products, sizes, and modifiers |
Customer lookup | Via Syrve loyalty system, matched by phone number |
Terminal group routing | Automatically selects the first available terminal group |
Fuzzy product matching | AKB-based search with 0.6 similarity threshold |
Multi-item orders | Supports arrays of order items in a single order |
Limitations
Feature | Status |
Modifier selection | Not yet implemented β modifiers array is sent empty |
Table reservation | Not implemented |
Payment processing | Not implemented |
Order modification | Create-only β orders cannot be edited after submission |
Testing the integration
Test the integration through the Newo conversation interface (voice or chat).
Verify setup: After publishing, confirm that
syrve_access_tokenis not empty andsyrve_organization_idhas been populated.Verify menu sync: Start a conversation and check that
syrve_delivery_menuis populated. Confirm the AKB contains entries with the labelsyrve_menu.Test order creation: Say "I want to order a [menu item] to [address]." Verify the order appears in Syrve with the correct items and pricing.
Test status check: Ask "What's the status of my order?" Verify the delivery status is returned correctly.
If nothing happens
Confirm
syrve_api_keyis set correctly.Verify
syrve_access_tokenwas obtained after publishing (it should not be empty).Confirm
syrve_organization_idwas discovered.Check that
syrve_delivery_menuis populated (menu cache was synced).Verify the AKB contains entries with the label
syrve_menu.Re-publish the project if any credentials were changed after the initial publish.
FAQ
How does the agent match menu items from conversation?
The integration uses a two-step process: the LLM extracts the item name from conversation context, then a fuzzy AKB search with the syrve_menu label matches the name to cached products. The similarity threshold is 0.6. The matched product's ID and price are used when building the order payload.
How often is the menu refreshed?
By default, every 24 hours (syrve_delivery_menu_update_interval = 86400 seconds). The cache is checked on every session start. If the timestamp exceeds the TTL, the menu is re-fetched from Syrve's nomenclature API.
What happens if a menu item isn't found?
The agent receives a product_not_found error, which it can communicate to the customer. Only items present in the Syrve nomenclature and cached in AKB can be matched.
Does the integration support modifiers (e.g., extra cheese)?
The menu cache includes full modifier group data, including group names, required/optional flags, min/max counts, and individual modifier prices. However, modifier selection is not yet implemented in the ordering pipeline β the modifiers array is sent empty when an order is placed.
How does multi-location routing work?
During order creation, the integration fetches terminal groups for the organization and automatically selects the first available terminal group for routing. Manual terminal group selection is not currently supported.
What customer information is required for ordering?
First name, phone number (E.164 format), and delivery address are required. The phone number is used to look up the customer in Syrve's loyalty system β the customer must already exist in Syrve before an order can be placed.
What is injected into the prompt after an order is created?
The full order information returned by the Syrve API is injected as context into the agent's prompt. This allows the agent to reference the order ID, status, and line items in subsequent conversation turns without making another API call.
