The branches feed is a CSV file containing a list of your physical locations (branches/stores). It can be used in different ways depending on your vertical:
- E-commerce: Powers the Map block in Experience Email.
- Restaurants: Provides the stores or branches list used for store-level targeting and restaurant-specific capabilities (for example, enabled channels such as drive‑thru/kiosk/mobile/web).
You can either upload a CSV file to Dynamic Yield or host the file on your server and sync it via URL.
Choose your vertical
Create a new feed
- Go to Assets › Data Feeds.
- Click New and select Branches.
- In Feed Source, choose one:
- Upload file: Upload a CSV file manually from your computer. The feed updates only when you upload a new file.
- Hosted URL: Provide a URL where the feed file is hosted.
- Review the preview (up to 100 branches), including errors and warnings.
- Click Save.
File requirements
- Maximum: 5,000 branches
- Encoding: UTF-8
- Format: CSV
Required columns
Column names are case sensitive.
| Column (case sensitive) | Description | |
| Id | Branch unique identifier | |
| Longitude | Branch longitude in decimal degrees (DD) format | Coordinate format example: 41.40338, 2.17403 |
| Latitude | Branch latitude in decimal degrees (DD) format | |
| Url | Destination URL for CTA or map click (must start with HTTP/HTTPS) | |
| Name | Branch name | |
Create a new feed
- Go to Assets › Data Feeds.
- Click New and select Branches.
- In Feed Source, choose one:
- Upload file: Upload a CSV file manually from your computer. The feed updates only when you upload a new file.
- Hosted URL: Provide a URL where the feed file is hosted.
- Review the preview (up to 100 branches), including errors and warnings.
- Click Save.
Note: The basic navigation and upload options are the same as for an e-commerce account, but Restaurants accounts can manage the store feed from a Restaurants admin experience (depending on your setup). Contact your account team for more information.
File requirements
- Maximum: 50,000 branches
- Format: CSV
Required columns
Column names are case sensitive and must exactly match names in the following table.
| Column (case sensitive) | Type | Notes / possible values |
| id | String | Store unique identifier |
| name | String | Store name |
| drive_thru | Boolean | TRUE / FALSE |
| kiosk | Boolean | TRUE / FALSE |
| mobile | Boolean | TRUE / FALSE |
| web | boolean | TRUE / FALSE |
| lab_location | Boolean | TRUE / FALSE |
| zip_code | String | Postal/ZIP code |
| latitude | Number | Decimal degrees |
| longitude | Number | Decimal degrees |
| global_location_ID | String | Global store/location id, if available |
| tags | String | Free text tags |
Custom branch attributes
You can add custom attributes to the required schema (using the gv_ prefix) to enrich your branch data directly within the feed. These attributes enable store-level targeting (for example: language, region, store type).
| Format | Column Name | Example |
| String | <"gv_column_name"> | gv_area_type |
Feed update behavior
Restaurants store feed uploads use an UPSERT operation:
- New stores are added
- Existing stores (same ID) are updated
- Stores are not deleted automatically
Example:
- Initial upload: 100 stores → 100 saved
- Next upload: 55 stores
- 50 new → added
- 5 existing → updated
- 95 stores not included in the new upload remain unchanged
Validation
- Errors (block entire sync):
Missing mandatory column → upload fails - Warnings (partial sync):
Missing mandatory value for a branch → that branch is skipped