Common Workflows

Aurora's sales and design process moves through a sequence of conceptual stages — from capturing a lead to delivering a signed agreement, through post-sale fulfillment including plan sets and roof measurements. At most stages, there are multiple ways to accomplish the same goal: some steps can be fully automated through the API, others have richer options available in the Aurora app, and many support a hybrid approach.

This guide describes the stages of the full sales workflow and the options available at each one. Use it to understand where the API fits in your integration and which steps may require in-app action by a user.

📘

Entity prerequisites

Nearly every API call requires a tenant_id (from your API settings) and a project_id. Many downstream resources also require a design_id. See Entity Hierarchy for the full dependency tree.


CRM and order-based integrations

CRM integrations with Aurora take two common forms:

  • External CRM → Aurora: A lead originates in an external sales system (e.g., Salesforce). The integration creates a project in Aurora via the API, using the CRM's contact and address data as input. Aurora then becomes the system of record for solar design and sales, and data (proposals, agreements, project status) may be synced back to the CRM.

  • Consumer Order → Aurora: A homeowner submits a quote request through Aurora's Consumer offering, generating a Consumer Order. Once that order is released, the integration converts it to a project in Aurora. The customer may also want to sync the resulting project and design data back into their own system.

The design and fulfillment stages in this guide apply equally once a project exists, regardless of how it was created.

StepHow
Track and update an orderGET /tenants/{tenant_id}/orders, PATCH /tenants/{tenant_id}/orders/{id}
Release an orderPOST /tenants/{tenant_id}/orders/{id}/sold
Create a project from a released orderPOST /tenants/{tenant_id}/orders/{id}/project_creation/run (async); consumes credits
Be notified when a new order is availableorder_created webhook — the order appears in the Aurora app at this point

Full sales workflow

Stage 1: Create a project

A project is the root entity for a site. Almost all other resources belong to a project.

MethodHow
APIPOST /tenants/{tenant_id}/projects with a street address or lat/lng coordinates
In-appCreate a project directly in the Aurora app
In-appConvert a released Consumer Order to a project (see CRM section above)
⚠️

Creating a project consumes credits. Do not create projects as a mechanism to retrieve data (e.g. AHJ information) when no ongoing project is intended. See Credits.


Stage 2: Enter consumption information

Consumption data drives the energy offset calculation and financing simulations. Multiple input methods are supported; they are not mutually exclusive.

MethodHow
APIUpload a utility bill (PDF or image) via POST /tenants/{tenant_id}/projects/{project_id}/utility_bills/run — Aurora parses it asynchronously via OCR
APISet monthly energy or bill amounts directly via PUT /tenants/{tenant_id}/projects/{id}/consumption_profile
In-app onlyConfigure household appliances to model consumption from usage patterns
In-app onlyEnter consumption data manually in the project view
📘

Only the most recently parsed utility bill feeds the project's consumption profile. Multiple bills can be uploaded, but earlier uploads are superseded.


Stage 3: Model the physical site

A site model captures the roof geometry, pitch, and shading of the installation location. It is a prerequisite for solar system design. Several methods are available, ranging from fully automated to professional services.

MethodHow
APISubmit a design request to Aurora's Site Modeling Service via POST /tenants/{tenant_id}/design_requests — a design professional builds the 3D model; notified via design_request_completed webhook; consumes credits
APISubmit a design request fulfilled by EagleView's design service via POST /tenants/{tenant_id}/design_requests/eagleview — accepted via POST /tenants/{tenant_id}/design_requests/eagleview/{id}/accept; consumes credits
APIRun Aurora AI (AI Roof) on an existing design via POST /tenants/{tenant_id}/designs/{design_id}/ai_roof/run — generates a 3D roof model from aerial imagery in seconds; async operation; consumes credits
In-appSubmit design requests or run AI Roof from the Aurora app; may also be done live during a sales presentation
In-app onlyBuild the roof model manually in Design Mode
📘

Expert design requests and AI Roof consume credits. See Credits. For testing and development, use the mock design request service to generate a 3D model instantly without consuming credits — see Create a 3D roof model for testing.

Each of these methods produces an accepted design with a design_id that downstream stages require.


Stage 4: Produce a solar system design

With a site model in place, a solar panel layout and system configuration can be produced.

MethodHow
APIRun AutoDesigner via POST /tenants/{tenant_id}/designs/{design_id}/auto_designer/run — generates an optimal panel layout automatically; async operation
In-appDesign the system manually in Design Mode, or run AutoDesigner from the design view; may also be done live during a sales presentation

Stage 5: Run a performance simulation

A performance simulation calculates energy production, shade analysis, and financial model inputs. It is required before pricing and proposals can be generated.

MethodHow
APITrigger via POST /tenants/{tenant_id}/designs/{design_id}/performance_simulation/run; subscribe to performance_simulation_job_completed webhook for completion
In-appTriggered automatically when a design is saved or manually from the design view

Stage 6: Configure pricing

Pricing sets the system cost on the design, which flows into proposals and financing simulations.

MethodHow
APIRead, set, and manage pricing via the design pricing endpoints — see Update design pricing
In-appEnter pricing manually in the design view

Stage 7: Configure financing

Financing options model how the homeowner will pay for the system (cash, loan, lease, PPA). Configuration is primarily in-app; the API supports reading results and pushing to integrated financing partners.

MethodHow
APIRetrieve available financing options and simulation results via GET /tenants/{tenant_id}/designs/{design_id}/financings
APIPush a financing option to an integrated partner (e.g. Mosaic) via POST /tenants/{tenant_id}/designs/{design_id}/financings/{financing_id}/push_to_financier
In-appConfigure financing products, select the option to present in the proposal
In-appHomeowner financing applications (available for some integrated partners during the sales presentation)

Stage 8: Create and share a proposal

A proposal is the customer-facing presentation of the system design, pricing, and financing.

MethodHow
APICreate a proposal from a template via POST /tenants/{tenant_id}/designs/{design_id}/proposals/default
APIRetrieve a shareable web proposal URL via GET /tenants/{tenant_id}/designs/{design_id}/web_proposal — see Retrieve Web Proposal URL
In-appPresent the proposal interactively in Sales Mode
📘

Web proposal links expire after 30 days by default. Use POST /tenants/{tenant_id}/designs/{design_id}/web_proposal/generate_url to regenerate an expired link.


Stage 9: Agreement

The agreement is the contract the homeowner signs to authorize the installation.

MethodHow
APIRead agreement status and details via GET /tenants/{tenant_id}/agreements/{id}
APIDownload a signed agreement via the async download_url endpoints — see Download a signed agreement
APISubscribe to the project_status_updated webhook to be notified when a project is marked sold — see Be notified when projects are sold
In-appSend, manage, and track agreements via Contract Manager (requires Contract Manager add-on or Scale tier)
📘

Contract Manager consumes credits. See Credits.


Stage 10: Post-sale fulfillment

Once the agreement is signed and the project is marked sold, downstream fulfillment steps begin.

MethodHow
APIRequest engineering plan sets and track their status via the plan set endpoints — see Track plan set requests
APIRetrieve roof measurements for structural or racking purposes via GET /tenants/{tenant_id}/designs/{design_id}/roof_summary — see Retrieve roof measurements
APIRetrieve the racking bill of materials — see Retrieve racking bill of materials
In-app onlyRequest Instant Plan Sets
📘

Plan sets consume credits. See Credits.