GrabFood is an online food delivery service offered by Grab, a prominent super-app in Southeast Asia. It connects users with a wide range of restaurants, allowing them to order meals for delivery through an intuitive mobile app or website.
GrabFood integration with Wiresk allows businesses to handle essential operations efficiently and improve their responsiveness. With this integration, restaurants can manage their GrabFood activities directly from Wiresk.
1 – Connect GrabFood to Wiresk Copy Link
A connection to your Grab Merchant account is needed so we can sync it with our platform.
There are two ways to connect your app to Wiresk:
- In “My apps” section, where you can manage your connections (select or create your group first to get access to this section, refer to the Group system ).
- While building your Flow, you can easily establish a connection to your app directly within the Flow builder. This can be done during the setup of either a Trigger or a Method.
In this documentation, we will explain how to create a connection in “My apps” section, it is essentially the same as when creating it on-the-go.
Add GrabFood app in Wiresk Copy Link
- On the left panel of Wiresk user interface, go to “My apps” and click on the (+) button.
- Search “GrabFood” in the search field or scroll down the list of apps and choose the Grab icon.
- In the prompted screen, enter the credentials given to you by GrabFood company into the corresponding fields.
- Find your credentials in your Grab Developer Portal > Project details > Credentials.
- Give a Name to the connection.
- Enter you GrabFood Client ID.
- Enter your GrabFood Client Secret.
- Chose your connection Environment.
- Click on “Create App” button.
Voila! Your Notion app connection is ready. You can now use it to build your Flows.
2 – Create your automated Flows with GrabFood Copy Link
Now that GrabFood is linked to Wiresk, you’re ready to start building Flows.
Create a Flow Copy Link
Select your Group, then on the Flow management screen click on “Create Flow”.
A – Select the Trigger Copy Link
- Name the Flow that you want to create.
- Add your Trigger by clicking on the red plus (+) Add button.
- On the Trigger selection screen, search your app or select it from the list below the screen.
Select your preferred Trigger on the next screen and customize its settings.
As mentioned in “How to connect your app to Wiresk” above, during your Trigger settings, you can create a new connection to your apps at this stage.
B – Add an HTTP Trigger to your Flow Copy Link
An HTTP Trigger allows you to manually activate your Flows.
HTTP Trigger settings Copy Link
- Click on the red plus button (+) again to add a Trigger for testing your Flow, then click on the button “HTTP Trigger”.
Write a description and select your API key or create a new one.
- Click on save. Now you can use your HTTP Trigger to Manually run your Flow.
C – Add a Method to your Flow Copy Link
The Method will perform a specific task on a particular app or service you’ve connected to Wiresk like get info or send emails.
You can add at least 1 or multiple Methods for complex Flows (a maximum of 255 Methods).
- On the Flow builder screen, click on the plus button (+) next to the Trigger icon.
- Search or scroll down to select your apps Methods, then configure it settings. For GrabFood Methods, see Methods list and settings in the step below.
D – Add Wiresk Tools to your Flow Copy Link
If you want to build a complex Flow, Wiresk offers a selection of tools at your disposal. Refer to Wiresk’s Tools
To add Tools in your Flow, Follow the same step as adding the Methods. On the Flow builder screen, click on the plus button (+) then just click on the “Tool” tab and select the Tool that you want to add.
3 – GrabFood Methods Copy Link
What your automation will do…
Wiresk simplifies the integration of GrabFood with your current POS. Use the available methods in Wiresk to:
- Eliminate manual order entry: When a customer places an order through GrabFood, it automatically appears in your POS system. This allows your restaurant staff to focus on fulfilling orders efficiently and providing excellent customer service.
- Maintain accurate menus: Updates made to your GrabFood menu, such as adding new items or marking items as unavailable, are instantly reflected in your POS system. This eliminates the need for manual updates, saving time and reducing the risk of errors.
- Manage campaigns with ease: Easily manage and launch restaurant campaigns directly from within the your POS interface.
List of Available Methods: Copy Link
A. MANAGE ITEM Copy Link
Update Item Copy Link
▪️ Updating item price to zero is not allowed.
▪️ All item records with the same
id
under the same merchant are updated.▪️ To mark an item as UNAVAILABLE, the
maxStock
value has to be set as 0. Item will be set to “AVAILABLE” if maxStock
> 0
. Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Update Item |
Connection* | Select your connection or create one. |
Map Fields [+ Add Field] you can add optional fields: Price, Available status, Advanced Pricings, Purchasabilities. | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
ID* | The record’s ID (ID of the item or modifier) on the partner system. All item records with the same id under the same merchant are updated. |
Additional fields | |
Price | In minor unit format. for example: $1 = 100 cents $2.50 x 100 = 250, is the minor unit. Note: The prices on your menu should be exclusive of tax (except for Merchant in Singapore). Tax rate will be configured in GrabFood’s system by the Integration Managers. |
Available Status | Select AVAILABLE – UNAVAILABLE – UNAVAILABLE TODAY To mark an item as UNAVAILABLE, the maxStock value has to be set as 0. Item will be set to “AVAILABLE” if maxStock > 0 .What is Available Status? |
Max Stock | Available stocks under inventory for this item. Auto reduce when there is order placed for this item. Note: It is necessary to set maxStock to 0 if the availableStatus of the item is “UNAVAILABLE”. Item will be set to “AVAILABLE” if maxStock > 0. |
Advance Pricings | Price configuration (in minor unit) for different service, order type and channel combination. If a service type does not have a specified price, it will utilize the default price of the item. Key: select the advance pricing key. Possible Values: Delivery_OnDemand_GrabApp Price: price in minor unit. for example: $1 = 100 cents $2.50 x 100 = 250, is the minor unit. |
Purchasabilities | Purchasability is set to true by default for all service type, unless it is explicitly set to false. Modifier will reuse it’s item’s purchasability. Key: select the advance pricing key. Possible Values:
Purchasable: True - False |
(*) required field
Update Item Modifier Copy Link
▪️ All item records with the same
id
under the same merchant are updated. Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Update Item Modifier |
Connection* | Select your connection or create one. |
Map Fields [+ Add Field] you can add optional fields: Price, Available status, Advanced Pricings, Purchasabilities. | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
ID* | The record’s ID (ID of the modifier) on the partner system. All item records with the same id under the same merchant are updated. |
Name* | The modifier’s name. Used as identifier to locate the correct modifier. (This field is required from Grab but it seems not working properly). |
Price | In minor unit format. for example: $1 = 100 cents $2.50 x 100 = 250, is the minor unit. Note: The prices on your menu should be exclusive of tax (except for Merchant in Singapore). Tax rate will be configured in GrabFood’s system by the Integration Managers. |
Additional fields | |
Is Free | Allows the modifier’s price to be explicitly set as zero. Possible values are as follows: isFree && price == 0 sets the modifier’s price to zero.isFree && price > 0 returns an error message that “price cannot be set to > 0, if modifier is free”.!isFree && price > 0 sets the modifier’s price to the defined price.!isFree && price == 0 does not update the modifier’s price and reuses the existing price. |
Available Status | Select AVAILABLE – UNAVAILABLE – UNAVAILABLE TODAY To mark an item as UNAVAILABLE, the maxStock value has to be set as 0. Item will be set to “AVAILABLE” if maxStock > 0 .What is Available Status? |
Advance Pricings | Price configuration (in minor unit) for different service, order type and channel combination. If a service type does not have a specified price, it will utilize the default price of the item. Key: select the advance pricing key. Possible Values: Delivery_OnDemand_GrabApp Price: price in minor unit. for example: $1 = 100 cents $2.50 x 100 = 250, is the minor unit. |
(*) required field
B. MANAGE ORDER Copy Link
Accept Order Copy Link
See more about “Accept/Reject orders” on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Accept Order |
Connection* | Select your connection or create one. |
Map Fields | |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
(*) required field
Cancel Order Copy Link
See more about “Cancel Orders” endpoint rules and conditions on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Cancel Order |
Connection* | Select your connection or create one. |
Map Fields | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
Cancel Code* | Select the cancellation reason: 1001 (Items are unavailable) 1002 (I have too many orders now) 1003 (My shop is closed) 1004 (My shop is closing soon) |
(*) required field
Check Cancellation Eligibility Copy Link
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Check Cancellation Eligibility |
Connection* | Select your connection or create one. |
Map Fields | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
(*) required field
List Copy Link
▪️ This Method is not available in staging environment. You may ignore the URL path provided.
▪️ You can only retrieve orders from a maximum of 7 days before today. E.g. If today is 7 November, the earliest date you can get orders for is 31 October.
▪️ Increment
page
by 1 for every request until the more
parameter returned is false.▪️ For orders placed on a previous day but completed on the current date, the
date
should be set to the order completion date and the page
should be set to 0.See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | List |
Connection* | Select your connection or create one. |
Map Fields | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
Date* | The date of your report. Example: 2020-01-20 |
Page* | Specify the page number for the report. Example: 1 |
(*) required field
Reject Order Copy Link
▪️ It is only applicable to partners that have configured their store for manual order acceptance.
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Reject Order |
Connection* | Select your connection or create one. |
Map Fields | |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
(*) required field
Set Order Ready Time Copy Link
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Set Order Ready Time |
Connection* | Select your connection or create one. |
Map Fields | |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
Ready Time* | The new order ready time for this order, based on ISO_8601/RFC3339. Example: 2025-01-09T14:30:00Z YYYY-MM-DD represents the date (year, month, day).T separates the date and time components.HH:mm:ss represents time in hours, minutes, and seconds.Time Zone Support Use Z for UTC (Coordinated Universal Time), e.g., 2025-01-09T14:30:00Z .Use offsets from UTC in the format ±hh:mm , e.g., 2025-01-09T14:30:00+05:30 (UTC+5:30) or 2025-01-09T14:30:00-07:00 (UTC-7:00). |
(*) required field
Update Order Copy Link
⚠️ All ordered items must be included in the Method regardless of whether they have changes or not.
▪️The edited order will be submitted to partner via the submit order webhook, with the same
orderID
but the isMexEditOrder
value changing from false to true.▪️Update item’s modifier is not supported.
▪️Update item’s price is not supported.
▪️Customer is not able to select item with modifier in item replacement options. If merchant decided to replace a different item that has modifier options, please note that modifier will not apply to the item.
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Update Order |
Connection* | Select your connection or create one. |
Map Fields | |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
Items* Specify the array of all items in the order, including deleted, added, updated and unchanged items. | [⊕ Element][⊕ Map] Add fields or Map it from a Data Source. See Field Mapping. Item ID*: The item’s ID in Grab system that can be obtained from the Submit Order Webhook request payload parameters under items[].grabItemID , or items[].outOfStockInstruction.replacementGrabItemID for item replacement. External item ID from Partner system is only supported when ADDED status and isExternalItemID: true .Status*: The item’s status. Leave empty string if there is no change to the item. UPDATED – DELETED – ADDED Quantity: The item’s quantity. If the item is not being updated or deleted, use the original quantity. External Item ID: True – False Only applicable for “ ADDED ” status. Indicate if the itemID is an external item ID. Grab checks for the items that are mapped to the provided item ID, considering their availability. If multiple Grab items are found to be mapped to the provided external item ID, the last updated item will be chosen. If no suitable record is found, an 400 error will be returned to the partner, indicating that the submitted external item ID cannot be edited. |
(*) required field
Update Order Status Copy Link
The partner uses this Method to report the state of the delivery to GrabFood.
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Update Order Status |
Connection* | Select your connection or create one. |
Map Fields | |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
From Status* | Specify the order’s initial state: ACCEPTED – FIND DRIVER – COLLECTED |
To State* | Specify the order’s new state: FIND DRIVER – COLLECTED – DELIVERED |
(*) required field
Update Order as Ready Copy Link
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Update Order as Ready |
Connection* | Select your connection or create one. |
Map Fields | |
Order ID* | Get the order ID from the Method “List” orders. Refer to Grab FAQs for more details about orderID and shortOrderNumber. |
(*) required field
C. MANAGE MENU Copy Link
Notify Menu Update Copy Link
⚠️ Before using this Method, make sure:
▪️ The Get menu webhook is ready.
▪️ The merchant(s) has already integrated with GrabFood. If not, you will receive a 403 error stating that the merchant not been integrated yet.
▪️ For newly integrated merchant(s), there may be some caching of the store integration status. It is recommended that partners send the menu update notification 10 minutes after the store integration is activated.
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Notify Menu Update |
Connection* | Select your connection or create one. |
Map Fields | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
(*) required field
D. MANAGE STORE Copy Link
Update Store Status Copy Link
▪️ 30 minutes
▪️ 1 hour
▪️ 24 hours
⚠️ Notes:
▪️ Sending a pause or unpause request while the store is already in the same status will result in a conflict error.
▪️ Partners can use this Method to unpause the store if they wish to unpause it before the end of the pause period.
▪️ Partner can perform the pause using merchant device or reach out to Ops team if longer pause is needed.
▪️ The store will automatically resume operations once the specified pause duration has end.
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Update Store Status |
Connection* | Select your connection or create one. |
Map Fields | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
Is Pause* | Possible values: True – False |
Duration* | If you pause the store, specify a duration : “30m” “1h” “24h” |
(*) required field
E. MANAGE PARTNER ENDPOINT Copy Link
Get Partner Access Token Copy Link
GrabFood will need to request for a new token if:
▪️ No token exists
▪️ Existing token is expiring
▪️ There is a 401 Unauthorized response
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Get Partner Access Token |
Connection* | Select your connection or create one. |
Map Fields | |
Client ID* | Enter you GrabFood Client ID. |
Client Secret* | Enter you GrabFood Client Secret. |
URL* | URL of your system to request access token for example: https://name.api.test.ovh |
(*) required field
Response samples:
Field | Value Sample |
---|---|
access_token | eyJhbGciOiJSUzI1NiIsImtpZCI6Il9kZWZhdWx0IiwidHlwIjoiSldUIn0.eyJhdWQiOiI1NWRkNzEyZTViNWY0MDQyYTEzZjVkZTM0ZjM4NmVjMSIsImV4cCI6MTU2MDMwMDgzMSwiaWF0Ij... |
token_type | Bearer |
expires_in | 604799 |
Upsert Partner Menu Copy Link
See more about this endpoint on Grab Developer documentation.
Configuration Table:
Input Options:
- Input: Allows dynamic inputs, e.g., from a Trigger or from Step responses. Input tab>uncheck “Show recommended” to see all fields).
- Default Value: You can specify a fixed attribute.
Name* | Upsert Partner Menu |
Connection* | Select your connection or create one. |
Map Fields | |
Merchant ID* | Store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to Grab Store ID). |
Partner Merchant ID* | Partner store ID in your Grab Developer Portal > GrabFood POS integration > Store information (Store overview for production environment, corresponding to External Store ID). |
Currency* | Code*: Country code (<= 3 characters). Symbol*: Currency Symbol (<= 3 characters). Exponent*: The log base 10 of the number of times we have to multiply the major unit to get the minor unit. Should be 0 for VN and 2 for other countries (<= 2 characters). Refer to Country and Currency doc. |
Selling times*: It represents the availability schedule for a category or item within the menu. It allows partners to set when a particular item or category is available, such as during breakfast, lunch, or dinner. The selling time can be applied at both the category and item levels, providing greater flexibility for configuring the menu based on specific time periods. [⊕ Element][⊕ Map] Add more selling times or Map it from a Data Source. See Field Mapping. The Selling Times feature follows these guidelines: ▪️ Each outlet must have at least 1 and not more than 20 sellingTimes. If less than 1 sellingTimes entry is provided in the array, an error will be returned. If more than 20 sellingTimes entries are provided, the system will truncate the excess entries. ▪️ The selling time IDs should remain consistent and not swapped with each other. Reuse the selling time IDs for subsequent menu syncs and avoid assigning new IDs unless there is a change to minimize unnecessary updates. ▪️ The selling time duration ( sellingTimes[].startTime and sellingTimes[].endTime ) must be in UTC format. Example: For a schedule starting on January 9, 2023, at 8:00 AM (UTC+8), sellingTimes[].startTime should be set as "2023-01-09 00:00:00" .▪️ Overlapping is allowed for the service hours periods across different selling times. Breakfast menu selling time ~ Monday: 08:00 - 12:00 Regular menu selling tIme ~ Monday: 08:00 - 22:00 ▪️ A maximum of 1 sellingTimes is allowed for each category and item.If no selling time is specified for an item, it will inherit the selling time from the category; if a selling time is specified for the item, it will override the category’s selling time. ▪️ Duplicates of sellingTimes with similar duration and service hour periods are not allowed.▪️ Different openPeriodType can be applied for the selling time service hours (sellingTimes[].serviceHours ):– Open All Day : Indicates the item is available 24 hours.– Close All Day : Indicates the item is unavailable for the entire day.– Open Period : Defines availability for specific time periods. Local time format is expected. For example, "08:00" .A maximum of 3 periods can be defined per day for the service hours. Exceeding this will return an error. 💡 Tip: Utilize multiple periods within the service hours to align item selling times with different sessions. If available only during breakfast, configure the selling time with a single period: 08:00 – 11:00 .If available all day, configure the selling times with multiple periods: 08:00 – 11:00 , 12:00 – 17:00 , and 19:00 – 22:00 .For more details, refer to Item Selling time Menu Structure | |
Selling Times.ID | Set an ID of the selling times, e.g., “SELLINGTIME-01” (<= 64 characters). |
Selling Times.Name | Set a Name of the Selling times, e.g., “Breakfast” (<= 30 characters). |
Selling Times.Services Hours | Monday* _Open Period Type*: Defines the specific time period during which the menu is available. Select: Open Period, Open All Day or Close All Day _Periods (Define “Periods” only if the “Open Period Type” is set to “Open Period”) [⊕ Element][⊕ Map] Add more fields or Map it from a Data Source. . Start Time*: The open start time in 24h format. Local time format is expected. . End Time*: The open end time in 24h format. Local time format is expected. Same field settings for the other days: Tuesday* – Wednesday* – Thursday* – Friday* – Saturday* – Sunday* |
Selling Times.Start Time* | Define the starting date and time of the selling time duration. This must be in UTC format. Example: For a schedule starting on January 9, 2023, at 8:00 AM (UTC+8), the field should be set as "2023-01-09 00:00:00" . |
Selling Times.End Time* | Define the ending date and time of the selling time duration. This must be in UTC format. |
Categories* [⊕ Element][⊕ Map] Add more categories or Map it from a Data Source. See Field Mapping. Categories are the categorization of items in a menu. For example: Value Meal, Limited Time Offer, Best Seller. Categories have the following rules: ▪️ A menu should have minimum 1, maximum 100 categories: If there is less than 1 category, you will get an error. If there are more than 100 categories, GrabFood truncates the rest. ▪️ Category name has a character limit of 60. ▪️ A category cannot be created without a name. ▪️ A category must have at least 1 item entry; it cannot be created without items. ▪️ The category IDs should remain consistent and be reused for subsequent menu syncs, unless there is a change, to minimize unnecessary updates. | |
Categories.ID* | The category’s ID that is on the partner system. This ID should be unique (<= 64 characters). |
Categories.Available* Status | Select “AVAILABLE ” “UNAVAILABLE ” “HIDE “The status for the category. Refer to FAQs for more details about availableStatus. |
Categories.Selling Time* ID | The selling time’s ID for the category. All items within the category will apply the same selling time unless there is another selling time specified for the item. |
Categories.Name* | The name of the category (<= 60 characters). |
Categories.Name Translation | Translation of the category name. Only support up to 1 translated language. Refer Menu Translation. Name EN: English Name KH: Khmer |
Categories.Sequence | Display order of the category within the menu. |
Categories.Items* Items are the products partners are displaying on GrabFood. For example: Big Burger Fries Hawaiian pizza | [⊕ Element][⊕ Map] Add more items or Map it from a Data Source. See Field Mapping. ID*: The item’s ID in the partner system. This ID should be unique (<= 64 characters). Name*: The name of the item (<= 80 characters). Available Status*: Select AVAILABLE – UNAVAILABLE – HIDE – UNAVAILABLE TODAY ⚠️ In order to set an item as "UNAVAILABLE" , it is required to update both the available Status and max Stock fields, whereby the maxStock should be set to 0.Name Translation : Translation of the item name. Only support up to 1 translated language. Refer Menu Translation. Name EN = English, Name KH = Khmer Description: The description of the item. There is a custom length limit of 2000 for VN .(<= 300 characters).Description Translation: Translation of the item description. Only support up to 1 translated language. Refer Menu Translation. Description En, Description KH. Sequence: Display order of the item within the menu. Price*: The item’s price in minor format. For example: 1900 means $19 with currency.exponent as 2. Refer to FAQ to determine whether the pricing should be tax-inclusive or tax-exclusive.Photos: Your image URL link. Only 1 image is supported. Refer to FAQs for more details about images formats. Special Type: When set as “ alcohol “:The item does not appear in the cross-sell checkout section. The item does not get promoted in the “Recommended for you” section. There is an explicit legal age consent when consumers try to check out with that item. ⚠️ The merchant(s) must be enabled for alcohol sales in order to sell items with the special type alcohol . Please reach out to your integration support team for this setup.Selling Time ID: The selling time’s ID for the item. This value overrides the category’s selling time if it is different. Empty value implies the category’s selling time will be applied. Max Stock: Available stocks under inventory for this item. Auto reduce when there is order placed for this item. Empty value implies no limit. ⚠️ It is necessary to set maxStock to 0 if the availableStatus of the item is "UNAVAILABLE" . Item will be set to "AVAILABLE" if maxStock > 0. |
Item.Advanced Pricing | Price configuration (in minor unit) for different service, order type and channel combination. If a service type does not have a specified price, it will utilize the default price of the item. Refer Service Based Menu. [+ Add Field] Add prices for multiple service types. Delivery_OnDemand_GrabApp Price in minor unit. for example: $1 = 100 cents $2.50 x 100 = 250, is the minor unit. |
Item.Purchasability | Purchasability is set to true by default for all service type, unless it is explicitly set to false. Modifier will reuse it’s item’s purchasability. Refer Service Based Menu. [+ Add Field] Add multiple purchasability fields. Delivery_OnDemand_GrabApp Value: True - False |
Item.Modifier Groups Modifier Groups are the different options that a consumer can select within an item. For example: Choice of Crust Sugar Level Extra Toppings | [⊕ Element][⊕ Map] Add more Modifier Groups or Map it from a Data Source (see Field Mapping). Max 30 allowed per item. Refer to Modifier groups for more information. ID*: The modifier group’s ID that is on the partner system. This ID should be unique (<= 64 characters). Name*: The name of the modifier group (<= 50 characters). Available Status*: Select AVAILABLE – UNAVAILABLE – HIDE – UNAVAILABLE TODAY ⚠️ The item may be marked as "UNAVAILABLE" if no available modifier to be selected within the required modifier group where "selectionRangeMin": 1 .Selection Range Maximum: The maximum quantity of the modifiers to be selected. Refer to FAQs for more details about selection range. Selection range Minimum: The minimum quantity of the modifiers to be selected. Refer to FAQs for more details about selection range. Name translation: Translation of the modifier group name. Only support up to 1 translated language. Refer Menu Translation. Name EN = English, Name KH = Khmer Sequence: Display order of the modifier group within the menu. |
Modifier Groups.Modifiers Modifiers are the selections within a modifier group. For example: 100% Sugar 50% Sugar No Ice | Max 100 per modifier Group. Refer to Modifiers for more information. [⊕ Element][⊕ Map] Add more Modifiers or Map it from a Data Source. See Field Mapping. ID*: The modifier’s ID that is on the partner’s system. This ID should be unique (<= 64 characters). Name*: The name of the modifier (<= 40 characters). Name translation: Translation of the modifier name. Only support up to 1 translated language. Refer Menu Translation. Name EN = English, Name KH = Khmer Available Status*: The status for the modifier. Refer to FAQs for more details about availableStatus. Select AVAILABLE – UNAVAILABLE – HIDE – UNAVAILABLE TODAY Price: The modifier’s price in minor format. Refer to FAQs for more details about tax. Sequence: Display order of the modifier within the menu. |
Modifiers.Advanced Pricings | Price configuration (in minor unit) for different service, order type and channel combination. If a service type does not have a specified price, it will utilize the default price of the item. Refer Service Based Menu. [+ Add Field] Add prices for multiple service types. Delivery_OnDemand_GrabApp Price in minor unit. for example: $1 = 100 cents $2.50 x 100 = 250, is the minor unit. |
(*) required field
Response Samples in Json: Copy Link
{
"merchantID": "1-CYNGRUNGSBCCC",
"partnerMerchantID": "Partner-ABECU",
"currency": {
"code": "SGD",
"symbol": "S$",
"exponent": 2
},
"sellingTimes": [
{
"startTime": "2022-03-01 10:00:00",
"endTime": "2025-01-21 22:00:00",
"id": "partner-sellingTimeID-1",
"name": "Lunch deal",
"serviceHours": {
"mon": {
"openPeriodType": "OpenPeriod",
"periods": [
{
"startTime": "11:30",
"endTime": "21:30"
}
]
},
"tue": {
"openPeriodType": "OpenPeriod",
"periods": [
{
"startTime": "11:30",
"endTime": "21:30"
}
]
},
"wed": {
"openPeriodType": "OpenPeriod",
"periods": [
{
"startTime": "11:30",
"endTime": "21:30"
}
]
},
"thu": {
"openPeriodType": "OpenPeriod",
"periods": [
{
"startTime": "11:30",
"endTime": "21:30"
}
]
},
"fri": {
"openPeriodType": "OpenPeriod",
"periods": [
{
"startTime": "11:30",
"endTime": "21:30"
}
]
},
"sat": {
"openPeriodType": "OpenPeriod",
"periods": [
{
"startTime": "11:30",
"endTime": "21:30"
}
]
},
"sun": {
"openPeriodType": "OpenPeriod",
"periods": [
{
"startTime": "11:30",
"endTime": "21:30"
}
]
}
}
}
],
"categories": [
{
"id": "category_id",
"name": "Value set",
"nameTranslation": {
"property1": "translation",
"property2": "translation"
},
"availableStatus": "AVAILABLE",
"sellingTimeID": "partner-sellingTimeID-1",
"sequence": 1,
"items": [
{
"id": "item_id",
"name": "Crispy burger with smoked salmon",
"nameTranslation": {
"property1": "translation",
"property2": "translation"
},
"availableStatus": "AVAILABLE",
"description": "Crispy burger with smoked salmon is a delicious twist on a classic burger. Made with a perfectly cooked beef patty and topped with smoked salmon, fresh greens, and a creamy sauce.",
"descriptionTranslation": {
"property1": "translation",
"property2": "translation"
},
"price": 1900,
"photos": [
"http://example.com/image_url.jpg"
],
"specialType": null,
"taxable": false,
"barcode": "GTIN",
"sellingTimeID": "partner-sellingTimeID-1",
"maxStock": 15,
"sequence": 1,
"advancedPricing": {
"Delivery_OnDemand_GrabApp": 30,
"Delivery_Scheduled_GrabApp": 25,
"SelfPickUp_OnDemand_GrabApp": 25,
"DineIn_OnDemand_GrabApp": 25,
"Delivery_OnDemand_StoreFront": 25,
"Delivery_Scheduled_StoreFront": 25,
"SelfPickUp_OnDemand_StoreFront": 25
},
"purchasability": {
"Delivery_OnDemand_GrabApp": true,
"Delivery_Scheduled_GrabApp": true,
"SelfPickUp_OnDemand_GrabApp": true,
"DineIn_OnDemand_GrabApp": true,
"Delivery_OnDemand_StoreFront": true,
"Delivery_Scheduled_StoreFront": true,
"SelfPickUp_OnDemand_StoreFront": true
},
"modifierGroups": [
{
"id": "modifier_group_id",
"name": "Add on",
"nameTranslation": {
"property1": "translation",
"property2": "translation"
},
"availableStatus": "AVAILABLE",
"selectionRangeMin": 0,
"selectionRangeMax": 1,
"sequence": 1,
"modifiers": [
{
"id": "modifier_id",
"name": "Smoked tuna",
"nameTranslation": {},
"availableStatus": "AVAILABLE",
"price": 200,
"barcode": "GTIN",
"sequence": 1,
"advancedPricing": {}
}
]
}
]
}
]
}
]
}
F. MANAGE CAMPAIGN Copy Link
Create Campaign Copy Link
Delete Campaign Copy Link
List Copy Link
Update Campaign Copy Link
5 – Test run or automate your Flow Copy Link
After setting up your Flow, you can choose to:
- “Run once”, your Flow will run only a single time. You can use this function to test your Flow. Refer to how to set up an HTTP Trigger, in the “Create a Flow” step.
- “Run Scheduler” will automate your Flows with the recurrence rule you previously defined.
For more details, refer to How to run a Flow tutorial in our Help Center.
If you are using a Webhook Trigger, the Flow will initiate automatically when a webhook is received from your connected apps. This means that the Flow is automated without a scheduler and will run until you deactivate the Flow manually. Refer to Webhook documentation in our Help Center.
If you need an integration that you cannot find in Wiresk, you can make a request to our team, and we will try our best to satisfy your needs.