FlowRunner
PricingContact
Theme
Start Free

SolarMarket

CRM

Connect AI agents to SolarMarket, a Brazilian CRM for solar energy sales integrators. Agents create and update clients and projects, set custom field values, and read the funnels and stages a project moves through.

16 actions Session available
A design milestone, a site visit result, or a scheduled poll of List Projects starts the run
Get Active Proposal reads the principal proposal's pricing table and variables for the project
The result is tested for emptiness, because an empty response means no principal proposal, not no proposal
List Funnels And Stages and List Project Funnels resolve the funnel and stage ids this account uses
Update Project Custom Field Value writes the derived commercial values back onto the project
The integrator's commercial lead is shown the proposal values, the target stage, and any project with no active proposal
A person confirms the stage move on every project whose active proposal came back empty

What This Integration Enables

SolarMarket is a Brazilian CRM built for solar energy integrators, and the object that actually runs that business is the commercial proposal. A residential or commercial photovoltaic sale is not a line item, it is a calculation: consumption from the energy bill, system sizing, equipment selection, financing terms, and a payback figure the customer will judge the whole thing on. SolarMarket holds that as a structured artefact, and a proposal commonly carries more than five hundred variables grouped into topics covering data entry, the solar system, financials, the energy bill, commercial terms, the client, tables, series, assumptions, distributor fields, and the account's own custom variables, with the available keys listed in the platform under Configurações, then Proposta Comercial, then Variáveis Disponíveis.

This integration is shaped around that reality. Get Active Proposal reads the proposal so its numbers can drive everything downstream, document generation, financing submissions, notifications, and the project's own reporting fields. Clients and projects are fully writable through List Clients, Create Client, Update Client, Delete Client, List Projects, Create Project, Update Project, and Delete Project, and custom fields are first class through List Custom Fields, List Project Custom Fields, and Update Project Custom Field Value, which matters because a solar integrator's real pipeline data lives in fields the vendor never shipped. Funnels and stages are read through List Funnels And Stages and List Project Funnels, so a project is placed on a stage id resolved from the account rather than a number carried from somewhere else. Several behaviours decide whether a flow is correct here. Update Client and Update Project are partial updates, so only the fields you send are changed, and to clear a field you pass the literal text null as its value, which means the string is destructive and a blank is not. Create Project can attach to an existing client through Client ID or create one inline by leaving Client ID empty and setting New Client Name, and when Client ID is provided New Client Name is ignored. Get Active Proposal returns only the single active, or principal, proposal of a project, and if no proposal is flagged principal the result is empty even when other proposals exist, which is the single most consequential detail on this page. Field names and values keep SolarMarket's own Portuguese spelling and are passed through verbatim, including cnpjCpf, the bairro derived neighborhood field, and funnel etapas. Authentication is a two step exchange: the permanent API token from the platform under Perfil, then API, visible only to administrator users, is not sent on data requests. It is exchanged at the sign-in endpoint for a short lived JWT valid for six hours, which is then sent as a bearer token on every other call, with a fresh one fetched per execution. Lists page with limit, defaulting to 100, and page starting at 1, and search filters vary by resource, with clients supporting id, email, name, phone, and a creation date range and projects supporting id, clientId, name, and a creation date range.

On events, be precise, because this one is easy to get wrong. This connector ships no triggers. SolarMarket does have webhooks, covering project created, deleted, won, lost, moved, removed, reopened, and reincluded in a funnel, client created, deleted, reincluded, and updated, activity created, deleted, completed, and reopened, project custom field updated, and proposal generated, accepted, rejected, reopened, and deleted. But they require the Diamante plan and are configured only inside the platform's Automatização feature with per event conditionals, not through the API. So there is no action here that registers one, and nothing in this integration creates a FlowRunner trigger. An account on the right plan can point a SolarMarket automation webhook at a FlowRunner callback of your choosing, which is a configuration you make in SolarMarket rather than a capability of this connector. Otherwise, change detection is a scheduled poll of List Projects, List Clients, or Get Active Proposal using the creation date filters.

Without FlowRunner

Proposal numbers are retyped Pricing from the proposal is copied into a spreadsheet and into the CRM, and the three disagree by Friday
Funnel position is a guess A project is advanced because someone remembers a call, not because a priced proposal exists behind it
Clearing a field is accidental An update sends a blank value and nobody is sure whether it cleared the field or left it alone

With FlowRunner

Proposal values drive the record Get Active Proposal is read and its values are written onto project custom fields in the same run
A stage move needs a proposal behind it An empty active proposal stops the advance instead of quietly reporting a deal as priced
Clearing is explicit Updates are partial by design, and a field is only cleared when the literal text `null` is sent on purpose

Use Case Scenarios

A completed design that becomes a commercial opportunity

An engineering design finishes in Aurora Solar or a sizing tool. The agent calls List Clients filtered on cnpjCpf, email, or phone to find the customer, and Create Project either against the resolved Client ID or, where the customer is genuinely new, with Client ID empty and New Client Name set so the client is created inline. It then reads List Funnels And Stages to resolve the funnel and the etapas this account actually uses and places the project on the entry stage rather than on a number copied from a previous integration. List Project Custom Fields returns the fields this account added to projects, and Update Project Custom Field Value writes the design's system size, module count, and inverter selection onto them so the commercial team reads engineering's numbers rather than a summary of them. The whole record exists before anyone quotes anything.

Proposal values that reach the people and documents that need them

A proposal is generated in SolarMarket. On a schedule the agent calls List Projects for the recent set, then Get Active Proposal on each. Where a principal proposal exists, its pricing table and financial variables are read and used three ways: the headline values are written back onto the project through Update Project Custom Field Value so reporting works without opening each proposal, a summary goes to the commercial lead through Gmail, and the customer facing figures feed a document generation step. Because a proposal carries several hundred variables and the available keys are configured per account, the flow reads List Custom Fields and the account's own variable list rather than assuming key names, and any variable it cannot resolve is reported instead of substituted. Nothing about the proposal itself is changed, since proposals are read only through this connector.

A pipeline and client register kept honest on a schedule

The integrator wants a daily view without opening the platform. The agent calls List Projects with limit and page and the creation date filters, joins each to its client through List Clients, and reads List Project Funnels to see which funnel and stage each project currently sits on. Get Active Proposal indicates whether a project has a priced proposal behind its stage or not, which is the difference between a pipeline and a wish list. The joined view lands in Google Sheets and a short version goes to the sales team by WhatsApp, naming projects on a late stage funnel position with no active proposal and clients created in the period with no project at all. This run writes nothing, which is what makes it safe to schedule every morning.

Human-in-Loop Highlight

Update Project is the operation to gate, specifically when it moves a project onto a funnel stage, and the reason is a quiet asymmetry in Get Active Proposal. That action returns only the single active, or principal, proposal of a project. If no proposal is flagged principal, the result is empty even when other proposals exist. So an agent reading an empty response sees two very different situations as one: a project genuinely without a quote, and a project where the sales engineer built three versions and has not yet marked one principal. Advance the second one on the assumption it is the first and the commercial director's funnel now shows a deal in a priced stage with no price behind it, which is exactly the number a solar integrator uses to commit to equipment orders and installation crews. Sitting next to it is the partial update rule: Update Project and Update Client change only the fields you send, and a field is cleared by passing the literal text null, so an agent assembling values from an empty proposal can turn a populated commercial field into a cleared one without anything failing. So the agent reads, classifies, and stops on the empties. It posts to the commercial lead: "31 projects are ready to advance based on the design handoff. 24 returned an active proposal and I will move those to the stage Proposta Enviada and write the pricing fields. 7 returned an empty active proposal. 3 of those have no proposal at all and I will leave them where they are. The other 4 have proposals in SolarMarket that are not flagged principal, including project 8802 for Comercial Ipê which has three, ranging from 184,300 to 231,900. Moving those to a priced stage tells the funnel report they are quoted, and I have no way to tell which of the three is the real one. Advance the 24, and mark a principal proposal on the 4 before I touch them?" The lead answers once, marks the principal proposals inside SolarMarket, and the next run picks them up cleanly. This is the human-in-the-loop moment on a CRM where an empty response is ambiguous rather than negative, because an agent can prove that a proposal is missing from the API and only a person can tell it whether the quote is missing from the business.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via preferred channel
Human decides
Agent resumes with decision

Agent Capabilities

16 actions

Clients

4
  • List Clients Returns clients with `limit` and `page` paging and search filters for id, email, name, phone, and a creation date range. This is the resolution read that runs before a project is attached to anyone.
  • Create Client Creates a client. Field names and values keep SolarMarket's own spelling, including `cnpjCpf` and the `bairro` derived neighborhood field.
  • Update Client Updates a client as a partial update, changing only the fields sent. To clear a field, pass the literal text `null` as its value, which makes that string a deliberate act rather than a placeholder.
  • Delete Client Marks a client deleted and cannot be undone through the API.

Projects

7
  • List Projects Returns projects with `limit` and `page` paging and search filters for id, clientId, name, and a creation date range. This is the scheduled read that stands in for the events this connector does not receive.
  • Create Project Creates a project, attaching it to an existing client through Client ID or creating one inline by leaving Client ID empty and setting New Client Name. When Client ID is supplied, New Client Name is ignored.
  • Update Project Updates a project as a partial update, including moving it onto a funnel stage. Because a stage move is what a funnel report reads as a commitment, this runs behind an approval where the project has no active proposal behind it.
  • Delete Project Marks a project deleted and cannot be undone through the API.
  • List Project Funnels Returns the funnels a project belongs to, so a flow knows where a project currently sits before proposing a move.
  • List Project Custom Fields Returns the custom fields configured on projects for this account, which is where an integrator's real pipeline data lives.
  • Update Project Custom Field Value Sets the value of a project custom field. This is how proposal and design figures become reportable without opening each proposal by hand.

Proposals

1
  • Get Active Proposal Returns the single active, or principal, proposal of a project, with its pricing table and its variables across data entry, solar system, financials, energy bill, commercial, client, tables, series, assumptions, distributor, and custom topics. If no proposal is flagged principal the result is empty even when other proposals exist, so an empty response is ambiguous and is treated as a stop rather than a no. Read only.

Funnels

2
  • List Funnels And Stages Returns the funnels and their `etapas` configured on this account, so a stage is set by a resolved id rather than a number carried in from elsewhere.
  • List Custom Fields Returns the custom fields defined on the account, used to build a payload from the running configuration instead of from a mapping written months ago.

Users

2
  • Get Authenticated User Returns the user the connection authenticates as, which is worth checking because the API token is visible only to administrator users in the platform.
  • List Users Returns the users on the account, used to resolve an owner before a project assignment writes one.

Frequently Asked Questions

What can FlowRunner do with SolarMarket?

FlowRunner agents can run Get Authenticated User, List Users, and List Clients in SolarMarket, plus 13 more actions.

Does connecting SolarMarket to FlowRunner require OAuth?

No. SolarMarket connects to FlowRunner with session-based authentication, no OAuth flow required.

Can SolarMarket trigger a FlowRunner workflow automatically?

SolarMarket doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with SolarMarket

$100 in credits. No card required. Connect in minutes.