Skip to content

CRM

Wiwink
API integration

Ship CRM features without building the integration. Full Wiwink API access via Proxy and 100+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
Wiwink

Use Cases

Why integrate with Wiwink

Common scenarios for SaaS companies building Wiwink integrations for their customers.

01

Sync designs and estimates into Wiwink proposals

Quoting, CAD, or design SaaS (solar, roofing, HVAC) can push generated material lists into Wiwink as proposals with line-item pricing, letting end users send for e-signature and invoice without leaving their workflow.

02

Pipe marketing leads directly into Wiwink CRM

Lead gen platforms, ad tools, and form builders can offer a native Wiwink destination so home services and SMB customers see new contacts appear in their CRM tagged with the correct source and form responses.

03

Power field service dispatch and route optimization

Mobile workforce, scheduling, or routing apps can read scheduled works and installer assignments from Wiwink, optimize them externally, and write back updated work statuses when jobs complete.

04

Automate e-signature flows for contracts and proposals

Document and contract SaaS can leverage Wiwink's native signature engine — uploading PDFs, assigning signers, and triggering sends — so customers don't need a separate DocuSign-style subscription.

05

Trigger invoicing the moment a technician finishes a job

Time-tracking and payroll apps for field technicians can update Wiwink work records to completed status when crews clock out, so back-office staff can immediately convert finished jobs into billable invoices.

What You Can Build

Ship these features with Truto + Wiwink

Concrete product features your team can ship faster by leveraging Truto’s Wiwink integration instead of building from scratch.

01

One-click proposal creation with line items

Generate a Wiwink proposal from your app and push proposal_products with taxable amounts, tax percentages, and discounts intact for EU-compliant quoting.

02

Contact and customer ingestion with source attribution

Create or update Wiwink contacts from inbound leads, ensuring the right source_id exists first and optionally attaching a form to capture qualification answers.

03

Field works scheduler and dispatcher

List, create, and update Wiwink works, assign installers via work_installer, and manage line items through work_products from inside your scheduling UI.

04

Embedded e-signature sending

Upload signature documents, add signers, and fire the signature send call from your product so users complete contract workflows without context switching.

05

Pipeline and status automation

Manage contact_statuses, customer_statuses, proposal_statuses, and work_statuses programmatically to keep Wiwink stages in sync with your product's state machine.

06

Signed document archiving

Listen for completed signatures and pull certifications to push signed PDFs into cloud storage or compliance archives for your customers.

SuperAI

Wiwink AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_wiwink_countries

List countries in wiwink. Returns: id, name, iso. Optionally filter results by name or ISO code, or include related states by passing 'states' via the with[] parameter.

get_single_wiwink_country_by_id

Get a single wiwink country by id. Returns: id, name, iso. Optionally include related states via the with[] parameter. Required: id.

list_all_wiwink_states

List states in wiwink. Returns: id, country_id, name for each state. Optionally filter by country_id or name, and include the related country object by passing 'country' via with[].

get_single_wiwink_state_by_id

Get a single wiwink state by id. Returns: id, country_id, name. Optionally include the related country object via with[]. Required: id.

list_all_wiwink_sources

List all lead sources in wiwink. Returns: id, name, color, owned per source. Optionally filter results by name.

get_single_wiwink_source_by_id

Get a single wiwink lead source by id. Returns: id, name, color, owned. Required: id.

create_a_wiwink_source

Create a new lead source in wiwink. Returns: id, name, color, owned of the created source. Required: name, color.

update_a_wiwink_source_by_id

Update an existing wiwink lead source by id. Returns: id, name, color, owned of the updated source. Required: id.

delete_a_wiwink_source_by_id

Delete a wiwink lead source by id. Returns an empty 204 response on success. Required: id.

list_all_wiwink_contacts

List wiwink contacts with optional field-level filters. Returns: id, status_id, source_id, corporate_name, trade_name, email, phone, vat, iban, bic, date.

get_single_wiwink_contact_by_id

Get a single wiwink contact by id. Returns: id, status_id, source_id, name, corporate_name, trade_name, email, phone, city, zipcode, body, date. Required: id.

create_a_wiwink_contact

Create a new contact in wiwink. Returns: id, status_id, source_id, name, employment, office, corporate_name, trade_name, email, phone, vat, description, date, extra_fields. Required: name.

update_a_wiwink_contact_by_id

Update an existing wiwink contact by id. Returns: id, status_id, source_id, corporate_name, trade_name, email, phone, vat, iban, bic, date. Required: id.

delete_a_wiwink_contact_by_id

Delete a wiwink contact by id. Returns an empty 204 response on success. Required: id.

list_all_wiwink_statuses

List work statuses in wiwink. Returns: id, name, color, owned. Optionally filter results by name.

get_single_wiwink_status_by_id

Get a single wiwink work status by id. Returns: id, name, color, owned. Required: id.

create_a_wiwink_status

Create a new work status in wiwink. Returns: id, name, color, owned. Required: name, color.

update_a_wiwink_status_by_id

Update an existing work status in wiwink. Returns: id, name, color, owned. Required: id.

delete_a_wiwink_status_by_id

Delete a work status in wiwink by id. Returns an empty 204 response on success. Required: id.

delete_a_wiwink_contact_status_by_id

Delete a contact status in wiwink by id. Returns an empty 204 response on success. Required: id.

list_all_wiwink_contact_statuses

List all contact statuses in wiwink. Returns: id, name, color, owned. Optionally filter results by name.

get_single_wiwink_contact_status_by_id

Get a single contact status in wiwink by id. Returns: id, name, color, owned. Required: id.

create_a_wiwink_contact_status

Create a new contact status in wiwink. Returns: id, name, color, owned.

update_a_wiwink_contact_status_by_id

Update an existing contact status in wiwink by id. Returns: id, name, color, owned. Required: id.

list_all_wiwink_forms

List wiwink forms, optionally filtered by contact, source, body, or office. Returns: id, status_id, source_id, name, date, phone, email, address, city, and body.

get_single_wiwink_form_by_id

Get a single wiwink form by id. Returns: id, status_id, source_id, name, date, phone, email, address, city, and body. Required: id.

create_a_wiwink_form

Create a new wiwink form linked to an existing contact. Returns: id, status_id, source_id, name, date, phone, email, address, city, and body. Required: contact_id.

update_a_wiwink_form_by_id

Update an existing wiwink form by id. Returns: id, status_id, source_id, name, date, phone, email, address, city, and body. Required: id.

delete_a_wiwink_form_by_id

Delete a wiwink form by id. Returns an empty 204 response on success. Required: id.

list_all_wiwink_customers

List wiwink customers with optional filters by status, source, email, phone, date range, and more. Returns: id, corporate_name, email, phone, status_id, source_id, date.

get_single_wiwink_customer_by_id

Get a single wiwink customer by id. Returns: id, corporate_name, email, phone, status_id, source_id, country_id, state_id, date. Required: id.

create_a_wiwink_customer

Create a new wiwink customer. Returns: id, corporate_name, email, phone, status_id, source_id, date. Required: corporate_name.

update_a_wiwink_customer_by_id

Update an existing wiwink customer by id. Returns: id, corporate_name, email, phone, status_id, source_id, date. Required: id.

delete_a_wiwink_customer_by_id

Delete a wiwink customer by id. Returns an empty 204 response on success. Required: id.

list_all_wiwink_customer_statuses

List customer statuses in wiwink. Returns: id, name, color, owned. Optionally filter results by name.

get_single_wiwink_customer_status_by_id

Get a single customer status by id in wiwink. Returns: id, name, color, owned. Required: id.

create_a_wiwink_customer_status

Create a new customer status in wiwink. Returns: id, name, color, owned.

update_a_wiwink_customer_status_by_id

Update an existing customer status by id in wiwink. Returns: id, name, color, owned. Required: id.

delete_a_wiwink_customer_status_by_id

Delete a customer status by id in wiwink. Returns an empty 204 response on success. Required: id.

list_all_wiwink_products

List wiwink products, optionally filtered by name or retail price range. Returns: id, name, tax_percent, price_retail, price_retail_final, price_reduced, price_reduced_final, price_cost, price_cost_final, excerpt, description, reference, code_ean13, code_upc, and code_isbn.

get_single_wiwink_product_by_id

Get a single wiwink product by id. Returns the full product record including id, name, tax_percent, price_retail, price_retail_final, price_reduced, price_reduced_final, price_cost, price_cost_final, excerpt, description, reference, code_ean13, code_upc, and code_isbn. Required: id.

create_a_wiwink_product

Create a new product in wiwink. Returns the created product including id, name, tax_percent, price_retail, price_retail_final, price_reduced, price_reduced_final, price_cost, price_cost_final, excerpt, description, reference, and product codes. Required: name.

update_a_wiwink_product_by_id

Update an existing wiwink product by id. Returns the updated product including id, name, tax_percent, price_retail, price_retail_final, price_reduced, price_reduced_final, price_cost, price_cost_final, excerpt, description, reference, and product codes. Required: id.

delete_a_wiwink_product_by_id

Delete a wiwink product by id. Returns an empty 204 response on success. Required: id.

list_all_wiwink_proposals

List proposals in wiwink. Returns: id, customer_id, status_id, full_number, date, sub_amount, discount_amount, taxable_amount, tax_amount, full_amount, prefix, suffix, number, comments. Optionally filter by customer_id[], status_id[], or date range (since/until); sort by number or date.

get_single_wiwink_proposal_by_id

Get a single wiwink proposal by id. Returns: id, customer_id, status_id, full_number, date, sub_amount, discount_amount, taxable_amount, tax_amount, full_amount, prefix, suffix, number, comments. Required: id.

create_a_wiwink_proposal

Create a new proposal in wiwink. Returns: id, customer_id, status_id, full_number, date, sub_amount, discount_amount, taxable_amount, tax_amount, full_amount, prefix, suffix, number, comments. Required: customer_id.

update_a_wiwink_proposal_by_id

Update an existing wiwink proposal by id. Returns: id, customer_id, status_id, full_number, date, sub_amount, discount_amount, taxable_amount, tax_amount, full_amount, prefix, suffix, number, comments. Required: id.

delete_a_wiwink_proposal_by_id

Delete a wiwink proposal by id. Returns an empty 204 response on success. Required: id.

create_a_wiwink_proposal_product

Create a proposal product in wiwink. Returns: id, proposal_id, name, quantity, price, sub_amount, discount_amount, taxable_amount, tax_percent, tax_amount, full_amount. Required: proposal_id, name, price.

update_a_wiwink_proposal_product_by_id

Update a proposal product in wiwink by id. Returns: id, proposal_id, name, quantity, price, sub_amount, discount_amount, taxable_amount, tax_percent, tax_amount, full_amount. Required: id.

delete_a_wiwink_proposal_product_by_id

Delete a proposal product in wiwink by id. Returns an empty 204 response on success. Required: id.

list_all_wiwink_proposal_statuses

List proposal statuses in wiwink. Returns: id, name, color, owned per status record. Optionally filter results by name.

get_single_wiwink_proposal_status_by_id

Get a single proposal status by id in wiwink. Returns: id, name, color, owned. Required: id.

update_a_wiwink_proposal_status_by_id

Update a proposal status by id in wiwink. Returns the updated status including id, name, color, and owned. Required: id.

delete_a_wiwink_proposal_status_by_id

Delete a proposal status by id in wiwink. Returns an empty 204 response on success. Required: id.

create_a_wiwink_proposal_status

Create a new proposal status in wiwink. Returns the created status including id, name, color, and owned. Required: name.

list_all_wiwink_installers

List installers in wiwink. Returns: id, name, email, phone, corporate_name, country_id, state_id, address, zipcode, city. Supports optional filters by name, email, phone, city, zipcode, address, corporate_name, country_id, and state_id.

get_single_wiwink_installer_by_id

Get a single wiwink installer by id. Returns: id, name, email, phone, corporate_name, country_id, state_id, address, zipcode, city. Required: id.

create_a_wiwink_installer

Create a new installer in wiwink. Returns: id, name, email, phone, corporate_name, country_id, state_id, address, zipcode, city. Required: name.

update_a_wiwink_installer_by_id

Update an existing wiwink installer by id. Returns: id, name, email, phone, corporate_name, country_id, state_id, address, zipcode, city. Required: id.

delete_a_wiwink_installer_by_id

Delete a wiwink installer by id. Returns an empty 204 response on success. Required: id.

get_single_wiwink_account_by_id

Get the remaining works available on the wiwink account. Returns: works (the remaining works count as an integer).

list_all_wiwink_works

List works in wiwink. Returns: id, customer_id, status_id, number, full_number, from, to, sub_amount, tax_amount, full_amount, and comments per record. Supports filtering by customer, status, and type ids, date range (since/until), sideloading relations (with[]), and sorting by number or from.

get_single_wiwink_work_by_id

Get a single wiwink work by id. Returns: id, customer_id, status_id, number, full_number, from, to, sub_amount, tax_amount, full_amount, and comments. Optionally sideload relations via with[]. Required: id.

create_a_wiwink_work

Create a new work in wiwink. Returns the created work including id, customer_id, status_id, number, full_number, from, to, sub_amount, tax_amount, full_amount, and comments. Required: customer_id.

update_a_wiwink_work_by_id

Update an existing wiwink work by id. Returns the updated work including id, customer_id, status_id, number, full_number, from, to, sub_amount, tax_amount, full_amount, and comments. Required: id.

delete_a_wiwink_work_by_id

Delete a wiwink work by id. Returns an empty 204 response on success. Required: id.

create_a_wiwink_work_installer

Sync installers for a wiwink work, replacing the current installer assignment. Returns the updated work object including id, customer_id, status_id, number, full_number, from, to, sub_amount, tax_amount, full_amount, and the synced installers array. Required: work_id.

create_a_wiwink_work_product

Create a work product in Wiwink linked to an existing work. Returns: id, work_id, name, price, sub_amount, taxable_amount, tax_percent, tax_amount, full_amount. Required: work_id, name, price.

update_a_wiwink_work_product_by_id

Update an existing work product in Wiwink by id. Returns the updated product including id, work_id, name, price, sub_amount, taxable_amount, tax_percent, tax_amount, and full_amount. Required: id.

delete_a_wiwink_work_product_by_id

Delete a work product in Wiwink by id. Returns an empty 204 response on success. Required: id.

get_single_wiwink_works_status_by_id

Get a single work status by id in wiwink. Returns: id, name, color, owned. Required: id.

list_all_wiwink_works_types

List work types in wiwink, optionally filtered by name. Returns: id, name.

update_a_wiwink_works_type_by_id

Update a work type in wiwink by id. Returns: id, name. Required: id.

get_single_wiwink_type_by_id

Get a wiwink work type by id. Returns: id, name. Required: id.

create_a_wiwink_type

Create a new work type in wiwink. Returns: id, name. Required: name.

delete_a_wiwink_type_by_id

Delete a wiwink work type by id. Returns an empty 204 response on success. Required: id.

get_single_wiwink_signature_by_id

Get a single wiwink signature by id. Returns: id, uuid, type, send_by, send_from, sent_at, completed_at, cancelled_at, and document. Required: id.

list_all_wiwink_signatures

List wiwink signatures with optional filters by type, send method, sender address, or date range. Returns: id, uuid, type, send_by, send_from, sent_at, completed_at, cancelled_at, and document per record.

create_a_wiwink_signature

Create a new wiwink signature. Returns: id, uuid, type, send_by, send_from, sent_at, completed_at, cancelled_at, and document. Required: type, send_by.

delete_a_wiwink_signature_by_id

Cancel a wiwink signature by id. Returns the cancelled signature including id, uuid, type, send_by, sent_at, cancelled_at, and document. Required: id. Only signatures that have been sent and not yet completed can be cancelled.

create_a_wiwink_signer

Create a signer for a wiwink signature. Returns: id, signature_id, uuid, send_to, verify_to, and configuration. Required: signature_id, send_to.

create_a_wiwink_certification

Upload a PDF document for certification in wiwink. Sends the raw binary PDF content to the certifications endpoint. Returns an empty 204 response on success. Required: RAW_BODY.

list_all_wiwink_work_statuses

List all work statuses in Wiwink. Returns: id, name.

get_single_wiwink_work_status_by_id

Get a single work status by id in Wiwink. Returns: id, name. Required: id.

create_a_wiwink_work_status

Create a new work status in Wiwink. Returns: id, name. Required: name.

update_a_wiwink_work_status_by_id

Update an existing work status by id in Wiwink. Returns: id, name. Required: id.

delete_a_wiwink_work_status_by_id

Delete a work status by id in Wiwink. Returns an empty 204 response on success. Required: id.

list_all_wiwink_work_types

List work types in wiwink. Returns: id, name. Optionally filter by name.

get_single_wiwink_work_type_by_id

Get a single wiwink work type by id. Returns: id, name. Required: id.

create_a_wiwink_work_type

Create a new work type in wiwink. Returns: id, name. Required: name.

update_a_wiwink_work_type_by_id

Update a wiwink work type by id. Returns: id, name. Required: id.

delete_a_wiwink_work_type_by_id

Delete a wiwink work type by id. Returns an empty 204 response on success. Required: id.

create_a_wiwink_signature_document

Upload a raw document file to an existing wiwink signature. Returns the updated signature object including id, uuid, type, send_by, send_from, and document metadata (size, crc32, md5, sha1). Required: signature_id.

create_a_wiwink_signature_send

Send a wiwink signature request by its ID. Returns the sent signature object including id, uuid, type, send_by, send_from, sent_at, completed_at, cancelled_at, and document checksum data (size, crc32, md5, sha1). Required: signature_id. Only signatures that already have a document and signers attached can be sent.

create_a_wiwink_signature_cancellation

Cancel a wiwink signature by its ID. Returns the updated signature object including id, uuid, type, send_by, send_from, sent_at, completed_at, cancelled_at, and document details. Required: signature_id.

get_single_wiwink_signature_account_by_id

Get the wiwink signature account settings. Returns: id, uuid, type, send_by, send_from, sent_at, completed_at, cancelled_at, document.

get_single_wiwink_work_account_by_id

Get the work account record in wiwink. Returns the account data object; the full set of account-level fields is not enumerated in the available source documentation. Returns: id, attributes.

get_single_wiwink_certification_account_by_id

Get the wiwink account certification summary. Returns: certifications (the total number of certifications available on the account).

Why Truto

Why use Truto’s MCP server for Wiwink

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 500+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Wiwink in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Wiwink account

Use Truto’s frontend SDK to connect your customer’s Wiwink account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Wiwink

Truto’s Proxy API is a 1-to-1 mapping of the Wiwink API. You call us, we call Wiwink, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Wiwink’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Wiwink on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What authentication does the Wiwink integration use?

Truto handles Wiwink's authentication on your behalf — your end users connect their Wiwink account once through Truto's connect flow, and Truto manages credentials, refresh, and token storage so you only call Truto's API.

Can I create both contacts (leads) and customers separately?

Yes. Wiwink cleanly separates top-of-funnel contacts from won customers, and both have dedicated create, list, update, and delete operations. This lets you mirror lead-to-customer handoffs without polluting accounting records.

Does the integration support Wiwink's native e-signature workflow?

Yes. You can create signatures, upload signature documents (PDFs), add signers, trigger a signature send, and cancel pending signature requests — covering the full lifecycle without a third-party e-signature provider.

Can I manage field service jobs and technician assignments through the API?

Yes. The integration exposes works (jobs), work products (line items with tax and discount logic), work installers (technician assignments), and work statuses, so you can build full dispatch and field service experiences.

How do I handle Wiwink's pipeline stages and statuses?

Wiwink models statuses as first-class entities. The integration supports contact statuses, customer statuses, proposal statuses, and work statuses — all with full CRUD — so you can read existing stages or create new ones to match your customer's pipeline.

Does the integration support proposals with detailed financial line items?

Yes. You can create and update proposals and manage proposal_products with the full financial structure Wiwink requires for EU compliance, including taxable amount, tax percent, discount amount, and final retail price per line.

Are reference data like countries and states accessible?

Yes. The integration exposes list and get operations for Wiwink countries and states, which is useful for populating address fields and validating localization on contacts, customers, and works.

Wiwink

Get Wiwink integrated into your app

Our team understands what it takes to make a Wiwink integration successful. A short, crisp 30 minute call with folks who understand the problem.