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 prerequisitesNearly every API call requires a
tenant_id(from your API settings) and aproject_id. Many downstream resources also require adesign_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.
| Step | How |
|---|---|
| Track and update an order | GET /tenants/{tenant_id}/orders, PATCH /tenants/{tenant_id}/orders/{id} |
| Release an order | POST /tenants/{tenant_id}/orders/{id}/sold |
| Create a project from a released order | POST /tenants/{tenant_id}/orders/{id}/project_creation/run (async); consumes credits |
| Be notified when a new order is available | order_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.
| Method | How |
|---|---|
| API | POST /tenants/{tenant_id}/projects with a street address or lat/lng coordinates |
| In-app | Create a project directly in the Aurora app |
| In-app | Convert 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.
| Method | How |
|---|---|
| API | Upload a utility bill (PDF or image) via POST /tenants/{tenant_id}/projects/{project_id}/utility_bills/run — Aurora parses it asynchronously via OCR |
| API | Set monthly energy or bill amounts directly via PUT /tenants/{tenant_id}/projects/{id}/consumption_profile |
| In-app only | Configure household appliances to model consumption from usage patterns |
| In-app only | Enter 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.
| Method | How |
|---|---|
| API | Submit 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 |
| API | Submit 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 |
| API | Run 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-app | Submit design requests or run AI Roof from the Aurora app; may also be done live during a sales presentation |
| In-app only | Build 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.
| Method | How |
|---|---|
| API | Run AutoDesigner via POST /tenants/{tenant_id}/designs/{design_id}/auto_designer/run — generates an optimal panel layout automatically; async operation |
| In-app | Design 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.
| Method | How |
|---|---|
| API | Trigger via POST /tenants/{tenant_id}/designs/{design_id}/performance_simulation/run; subscribe to performance_simulation_job_completed webhook for completion |
| In-app | Triggered 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.
| Method | How |
|---|---|
| API | Read, set, and manage pricing via the design pricing endpoints — see Update design pricing |
| In-app | Enter 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.
| Method | How |
|---|---|
| API | Retrieve available financing options and simulation results via GET /tenants/{tenant_id}/designs/{design_id}/financings |
| API | Push 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-app | Configure financing products, select the option to present in the proposal |
| In-app | Homeowner 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.
| Method | How |
|---|---|
| API | Create a proposal from a template via POST /tenants/{tenant_id}/designs/{design_id}/proposals/default |
| API | Retrieve a shareable web proposal URL via GET /tenants/{tenant_id}/designs/{design_id}/web_proposal — see Retrieve Web Proposal URL |
| In-app | Present the proposal interactively in Sales Mode |
Web proposal links expire after 30 days by default. UsePOST /tenants/{tenant_id}/designs/{design_id}/web_proposal/generate_urlto regenerate an expired link.
Stage 9: Agreement
The agreement is the contract the homeowner signs to authorize the installation.
| Method | How |
|---|---|
| API | Read agreement status and details via GET /tenants/{tenant_id}/agreements/{id} |
| API | Download a signed agreement via the async download_url endpoints — see Download a signed agreement |
| API | Subscribe to the project_status_updated webhook to be notified when a project is marked sold — see Be notified when projects are sold |
| In-app | Send, 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.
| Method | How |
|---|---|
| API | Request engineering plan sets and track their status via the plan set endpoints — see Track plan set requests |
| API | Retrieve roof measurements for structural or racking purposes via GET /tenants/{tenant_id}/designs/{design_id}/roof_summary — see Retrieve roof measurements |
| API | Retrieve the racking bill of materials — see Retrieve racking bill of materials |
| In-app only | Request Instant Plan Sets |
Plan sets consume credits. See Credits.