This guide covers how to structure Leaf when you serve multiple client organizations — agribusinesses, co-ops, ag retailers, or other agtech companies. As a managed service provider, you need data isolation between clients, independent billing, separate provider credentials per client, and the flexibility to configure processing differently for each one.
Account structure
Create a separate API owner for each major client, in each environment. This is the key structural difference from FMIS or crop insurance integrations, where a single API owner usually covers everything.
Each API owner holds the Leaf users for that client’s growers. This structure provides:
Data isolation — if a grower revokes access for one client, it doesn’t affect their data sharing with other clients. Provider credentials are scoped to the API owner level.
Per-client configuration — Client A can receive cleaned, filtered GeoJSON while Client B gets raw data. Each API owner has its own default configurations that apply to all Leaf users underneath it.
Independent billing — usage is tracked per API owner, so you can see exactly how many acres each client consumes. This makes cost pass-through straightforward.
If a client is small enough that it doesn’t warrant a separate API owner, you can group multiple small clients under one API owner and use Leaf user-level configurations to differentiate their processing. The trade-off is less billing granularity.
Data needs
Data needs vary by client. Some common patterns:
- Agronomic analysis clients need point-level GeoJSON, yield maps, and satellite imagery.
- Record-keeping clients need field boundaries, operation summaries, and crop/product data.
- Field trial analysis clients need high-resolution point data with precise spatial allocation.
- Sustainability clients need tillage operations and potentially application data.
Discuss specific data requirements with each client and configure their API owner accordingly. Your Leaf Customer Success representative can help map client needs to Leaf’s data products.
Processing rules
Since each client gets its own API owner, you can set processing configurations independently. Some considerations:
Clients coming from SMS workflows may want cleanupRules tuned to match their existing data cleaning thresholds. See the Crop Insurance guide for details on these configurations.
Clients who want raw data can have cleanupStandardGeojson set to false at the API owner level.
Clients with specific unit preferences — set unitMeasurement per API owner to match what each client expects.
Clients who need images — enable operationsImageCreation and configure operationsImageAttributeCreation per API owner.
Within a single API owner, you can still override configurations at the Leaf user level for individual growers who need different processing.
Sync granularity
Sync settings are also per API owner. Configure each client based on their requirements:
operationsProcessingRange — some clients need several years of history, others only need the current season.
customDataSync — useful for clients who are cost-sensitive and only want to process specific fields.
organizationDataSync — important for clients whose growers have complex John Deere organization structures.
Each API owner has its own acre allotment and billing. The same grower connected under two different API owners counts separately for billing purposes. Factor this into your pricing if multiple clients serve overlapping grower populations.
What to read next