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 usUse Cases
Why integrate with Wiwink
Common scenarios for SaaS companies building Wiwink integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
From the Blog
Wiwink integration guides
Deep dives, architecture guides, and practical tutorials for building Wiwink integrations.
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.