Skip to main content

Syrve integration

Updated today

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 (apiLogin credential)

  • At least one organization and terminal group configured in Syrve

  • Menu/nomenclature populated in Syrve

Get your Syrve API key

  1. Log in to your Syrve management console.

  2. Navigate to the API settings section.

  3. Locate and copy your API key (the apiLogin credential).

  4. 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

Idn

syrve

Title

syrve

Registry

production

Module

syrve_integration

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

  1. Navigate to the Attributes page in the customer's Builder.

  2. Type syrve in the search field and select Show Hidden to display all related attributes.

  3. Set the following attributes based on the customer's requirements:

Attribute

Required

Default

Description

syrve_api_key

Yes

β€”

Syrve API key (apiLogin credential)

syrve_base_url

No

API base URL. Override only if using a different regional endpoint.

syrve_delivery_menu_update_interval

No

86400

Menu cache TTL in seconds. Default is 24 hours.

syrve_override_agent_attributes

No

True

Override SuperAgent attribute schemas on setup.

  1. Paste the Syrve API key into the syrve_api_key attribute 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.

  1. 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:

  1. Fetches the full menu from Syrve's nomenclature API.

  2. Parses products with their sizes, prices, and modifier groups (deleted items are excluded).

  3. Stores the result in the syrve_delivery_menu attribute.

  4. 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:

  1. The LLM extracts order details from the conversation: customer first name, phone number, delivery address, items requested, and any comments.

  2. The customer is looked up in Syrve's loyalty system by phone number.

  3. Terminal groups are fetched for the organization, and the first available terminal group is selected for order routing.

  4. Each requested item is fuzzy-matched against the cached AKB using the syrve_menu label (match threshold: 0.6).

  5. The delivery order is created in Syrve with sourceKey: "voice-agent".

  6. 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

syrve_create_order_tool

Fires when the agent needs to place a delivery order

check_order_status_tool

Fires when the agent needs to look up order or delivery status

session_started

Auto-refreshes the menu cache if the TTL has expired

syrve_get_menu_tool

Manually triggers a menu refresh

project_publish_finish

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).

  1. Verify setup: After publishing, confirm that syrve_access_token is not empty and syrve_organization_id has been populated.

  2. Verify menu sync: Start a conversation and check that syrve_delivery_menu is populated. Confirm the AKB contains entries with the label syrve_menu.

  3. 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.

  4. Test status check: Ask "What's the status of my order?" Verify the delivery status is returned correctly.

If nothing happens

  • Confirm syrve_api_key is set correctly.

  • Verify syrve_access_token was obtained after publishing (it should not be empty).

  • Confirm syrve_organization_id was discovered.

  • Check that syrve_delivery_menu is 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.

Did this answer your question?