Bulk Import
Upload sites, customers, and device information at scale for fleet onboarding
Texture's bulk import tool enables large-scale data migration by uploading sites, customers, and device information before Integration Hub configuration is needed. Use bulk import to complete initial portfolio onboarding or manage net new system uploads at scale.
Overview
Data onboarding is a two-step process:
- Import your portfolio — Upload Site, Customer, and Device IDs via bulk import (this guide)
- Configure integrations — Connect your OEM and data provider credentials to begin syncing (see Integration Hub Guide)
Once both steps are complete, Texture automatically pulls device performance, energy usage, and program enrollment data on a recurring basis—no manual updates required.
Before You Begin
Important Considerations
:::warning Homeowner-Owned Sites If a homeowner owns the site, they should onboard their device through Texture Connect rather than through your Integration Hub or bulk import list. :::
Data Dictionary
Contact related fields
| Field | Required | Notes |
|---|---|---|
firstName | Required | Contact's first name |
lastName | Required | Contact's last name |
email | Optional | We prefer a unique email for validation, but you can use a TPO or company-generated email like dev@company.com |
phone | Optional | Contact phone number |
Site related fields
| Field | Required | Notes |
|---|---|---|
streetOne | Required | Street address |
streetTwo | Optional | Apartment, suite, unit, etc. |
city | Required | City name |
state | Required | State abbreviation |
postalCode | Required | ZIP or postal code |
country | Optional | Country code (defaults to US) |
siteName | Optional | Display name for the site |
siteReferenceId | Optional | Backreference to your system for the site specifically. Useful when a site has a different ID than the customer referenceId. |
Device related fields
| Field | Required | Notes |
|---|---|---|
manufacturerSlugs | Required | Must be exactly one of: tesla, enphase, solaredge-monitoring-api, eg4-electronics, franklinwh, sma |
systemIdentifier | Required | See manufacturer-specific requirements below |
System Identifier Requirements by Manufacturer
| Manufacturer | System Identifier Format |
|---|---|
tesla | DIN or Site UUID |
enphase | Site ID |
solaredge-monitoring-api | Site ID |
eg4-electronics | Inverter serial number |
franklinwh | aGate serial number |
sma | Plant ID (numeric) |
Enrollment related fields
| Field | Required | Notes |
|---|---|---|
programSlug | Optional | Slug of a program to enroll the device in. When provided, Texture delegates to the program enrollment flow which handles customer, site, and enrollment creation with eligibility checks. Either programSlug or programId may be specified; programId takes precedence if both are present. |
programId | Optional | ID of a program to enroll the device in. Takes precedence over programSlug when both are provided. |
Additional Variables
| Field | Required | Notes |
|---|---|---|
referenceId | Required | Backreference to your system—typically a userId, accountId, or siteId. This identifier is used to prevent duplicate customer creation and is tied to created sites and devices. |
tags | Optional | Arbitrary labels that create logical device groupings for batch operations. |
Performing a Bulk Import
Step 1: Prepare your data file
Download the bulk import template and populate it with your site, customer, and device data. Ensure all required fields are complete and manufacturerSlugs values match exactly.
Step 2: Upload to Texture
In Texture, click Integration Hub in the left sidebar, then navigate to Bulk Import and upload your prepared file.
Step 3: Review validation results
Texture validates your upload and displays any errors. Common errors are listed in the Troubleshooting section below.
Step 4: Confirm import
Once validation passes, confirm the import. Texture creates site and customer records immediately. Device records are created and await Integration Hub configuration to begin syncing data.
After Import
What Happens Next
- Sites and Customers are created immediately and appear in your Sites and Customers views
- Devices are created but remain in a pending state until Integration Hub is configured
- Enrollments are created when
programSlugorprogramIdis provided, subject to eligibility checks - Once Integration Hub is configured, Texture begins syncing device performance data automatically
Where to Find Your Data
Imported sites and customers appear in your Sites and Customers views. Once Integration Hub is configured, devices become active and appear in your Devices view. All imported data becomes available to query via the Texture API.
Troubleshooting
Upload Failed with Validation Error
Review the error message in Texture. The most common validation errors are:
manufacturerSlugs not specified correctly
The field is case sensitive and must match exactly: tesla, enphase, solaredge-monitoring-api, eg4-electronics, franklinwh, or sma. Using Tesla, TESLA, solaredge, eg4, or any other variation will cause the upload to fail.
Invalid address
Ensure all required address fields (streetOne, streetTwo, city, state, postalCode, country) are complete and properly formatted.
Address undiscoverable in Mapbox
Our mapping partner, Mapbox, cannot locate the address. Verify the address exists and is formatted correctly. Try variations if the exact format is causing issues.
Invalid program reference
If programSlug or programId is specified, Texture validates that the program exists in your workspace during the preview step. Ensure the slug or ID is correct and belongs to your workspace.
Additional blank rows
Remove any empty rows from your spreadsheet before uploading. Trailing blank rows can cause validation errors.
Fix the errors in your file and re-upload.
Devices Aren't Syncing Data
Devices require Integration Hub configuration before data syncing begins. See the Integration Hub Guide to connect your OEM credentials.
Need Help with a Complex Import
Contact your Implementation team for assistance with large migrations, custom data mapping, or integration questions.
Support
- For upload questions: Review the data dictionary and common errors section above
- For data mapping help: Contact your Texture Implementation team for guidance on complex scenarios
- For technical issues: Use the support panel in Texture or email support@texturehq.com with your organization name and upload details