Skip to content

Commit b98164f

Browse files
authored
feat(wiza): add Wiza integration for B2B prospect enrichment and search (#4662)
* feat(wiza): add Wiza integration for B2B prospect enrichment and search * fix(wiza): coerce reveal id to string, skip empty filters in prospect search * fix(wiza): throw on invalid JSON in advanced filter fields instead of silently dropping
1 parent ef14b2b commit b98164f

18 files changed

Lines changed: 1700 additions & 2 deletions

File tree

apps/docs/components/icons.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6950,3 +6950,14 @@ export function SnowflakeIcon(props: SVGProps<SVGSVGElement>) {
69506950
</svg>
69516951
)
69526952
}
6953+
6954+
export function WizaIcon(props: SVGProps<SVGSVGElement>) {
6955+
return (
6956+
<svg {...props} viewBox='0 0 51 49' fill='none' xmlns='http://www.w3.org/2000/svg'>
6957+
<path
6958+
fill='#FFFFFF'
6959+
d='m50.3 33.6-9.3-3.5c-2.9-10.4-9.6-20.8-17.1-29.4-1.4-1.5-4.4-0.7-4.2 1.9 0.4 6-0.4 13.3-4.4 20.5-0.9 1.6 1.4 3.3 2.9 1.6 3.2-3.3 5.3-9.1 6.3-15.2 3.9 5.4 9.2 13.8 11.2 22.9 0.2 0.9 0.8 1.6 1.6 1.9l6.2 2.3c-4.1 3.3-9.6 6-17.7 6-7.1 0-13.2-2.3-18.5-6l3.6-2.5c3.5 2 7.5 3.5 12.5 3.6 2.5 0 5-0.2 7.3-0.9 2-0.5 1.6-3.2-0.3-3-4 0.5-10.3 0.3-17.1-4.3-0.8-0.5-1.9-0.6-2.7-0.2l-9.2 4.3c-1.4 0.6-2.1 3.1-0.5 4.3 4.7 3.8 12.4 10.1 24.2 10.1 11.9 0 20.4-4.3 25.8-10.1 1.2-1.2 1.2-3.5-0.6-4.3z'
6960+
/>
6961+
</svg>
6962+
)
6963+
}

apps/docs/components/ui/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ import {
197197
WebflowIcon,
198198
WhatsAppIcon,
199199
WikipediaIcon,
200+
WizaIcon,
200201
WordpressIcon,
201202
WorkdayIcon,
202203
xIcon,
@@ -426,6 +427,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
426427
webflow: WebflowIcon,
427428
whatsapp: WhatsAppIcon,
428429
wikipedia: WikipediaIcon,
430+
wiza: WizaIcon,
429431
wordpress: WordpressIcon,
430432
workday: WorkdayIcon,
431433
x: xIcon,

apps/docs/content/docs/en/tools/google_docs.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Read content from a Google Docs document
5656

5757
### `google_docs_write`
5858

59-
Write or update content in a Google Docs document
59+
Append content to a Google Docs document. Content is inserted literally; Markdown is not interpreted. For formatted output from Markdown, use the Create operation with the markdown toggle enabled.
6060

6161
#### Input
6262

@@ -88,6 +88,7 @@ Create a new Google Docs document
8888
| `content` | string | No | The content of the document to create |
8989
| `folderSelector` | string | No | Google Drive folder ID to create the document in \(e.g., 1ABCxyz...\) |
9090
| `folderId` | string | No | The ID of the folder to create the document in \(internal use\) |
91+
| `markdown` | boolean | No | When true, content is interpreted as Markdown and converted to formatted Google Docs content \(headings, bold/italic, lists, tables, links, code blocks, blockquotes\). Default: false \(content inserted as plain text\). |
9192

9293
#### Output
9394

apps/docs/content/docs/en/tools/meta.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@
197197
"webflow",
198198
"whatsapp",
199199
"wikipedia",
200+
"wiza",
200201
"wordpress",
201202
"workday",
202203
"x",
Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
---
2+
title: Wiza
3+
description: Find, enrich, and verify B2B contact data with Wiza
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="wiza"
10+
color="#9284BC"
11+
/>
12+
13+
{/* MANUAL-CONTENT-START:intro */}
14+
[Wiza](https://wiza.co/) is a B2B contact data platform that finds and verifies emails and phone numbers for sales, recruiting, and marketing teams. Wiza pairs a global prospect database with real-time enrichment, so the data you act on stays accurate and deliverable.
15+
16+
With Wiza, you can:
17+
18+
- **Search a global prospect database**: Find people using person, company, and financial filters
19+
- **Enrich companies**: Resolve firmographic data from a name, domain, or LinkedIn URL
20+
- **Reveal individual contacts**: Get verified work emails, personal emails, and mobile phone numbers
21+
- **Track credit usage**: Check remaining email, phone, export, and API credits at any time
22+
23+
In Sim, the Wiza integration lets your agents drive prospecting and enrichment workflows end-to-end:
24+
25+
- **Prospect Search**: Use `wiza_prospect_search` to discover prospects matching detailed filters.
26+
- **Company Enrichment**: Use `wiza_company_enrichment` to enrich a company from name, domain, LinkedIn ID, or LinkedIn slug.
27+
- **Start Individual Reveal**: Use `wiza_start_individual_reveal` to begin enrichment for a contact via LinkedIn URL, name + company, or email — with configurable enrichment depth (`none`, `partial`, `phone`, `full`).
28+
- **Get Individual Reveal**: Use `wiza_get_individual_reveal` to poll a reveal and retrieve verified emails, phones, and full company context.
29+
- **Get Credits**: Use `wiza_get_credits` to monitor remaining credit balances before scaling up runs.
30+
31+
Individual reveals are asynchronous: start a reveal, then poll `wiza_get_individual_reveal` until `is_complete` is `true`. Combine these tools to build agents that source, enrich, and qualify leads on demand — without leaving your workflow.
32+
{/* MANUAL-CONTENT-END */}
33+
34+
35+
## Usage Instructions
36+
37+
{/* MANUAL-CONTENT-START:usage */}
38+
### Wiza API Key Setup
39+
40+
Wiza authenticates via API key. To get yours:
41+
42+
1. Log in to your [Wiza account](https://app.wiza.co/).
43+
2. Open **Settings → API** and generate a new API key (or copy an existing one).
44+
3. In Sim, open the Wiza block and paste the key into the **Wiza API Key** field.
45+
46+
The same key is used for every Wiza operation. Wiza enforces a rate limit of 30 requests per minute (43,200 per day) per key.
47+
48+
### Individual Reveals Are Asynchronous
49+
50+
`wiza_start_individual_reveal` returns immediately with a reveal `id` and a `status` of `queued` or `resolving`. To retrieve the enriched contact data, call `wiza_get_individual_reveal` with that `id` and check `is_complete`. Possible statuses are `queued`, `resolving`, `finished`, and `failed`.
51+
52+
For real-time delivery without polling, pass a `callback_url` when starting the reveal — Wiza will POST the completed payload to that URL.
53+
54+
### Enrichment Levels and Credits
55+
56+
When starting an individual reveal, choose the enrichment level that matches the data you need:
57+
58+
- **`none`** — Identity only, no contact info (no credit spend)
59+
- **`partial`** — Verified work email (email credits)
60+
- **`phone`** — Mobile phone (phone credits)
61+
- **`full`** — Email + phone (email + phone credits)
62+
63+
Use `wiza_get_credits` to monitor remaining email, phone, export, and API credits before running large batches.
64+
{/* MANUAL-CONTENT-END */}
65+
66+
67+
Integrates Wiza into the workflow. Search prospects, enrich companies, reveal verified emails and phone numbers for individuals, and check your account credit balance.
68+
69+
70+
71+
## Tools
72+
73+
### `wiza_prospect_search`
74+
75+
Search Wiza
76+
77+
#### Input
78+
79+
| Parameter | Type | Required | Description |
80+
| --------- | ---- | -------- | ----------- |
81+
| `apiKey` | string | Yes | Wiza API key |
82+
| `size` | number | No | Number of sample profiles to return \(0-30, default 0\) |
83+
| `filters` | object | No | Full filters object \(overrides individual filter params if provided\) |
84+
| `first_name` | array | No | Exact first names to match \(e.g., \["John", "Jane"\]\) |
85+
| `last_name` | array | No | Exact last names to match |
86+
| `job_title` | array | No | Job titles to include/exclude \(e.g., \[\{"v":"CEO","s":"i"\},\{"v":"CTO","s":"e"\}\]\) |
87+
| `job_title_level` | array | No | Seniority levels \(e.g., \["cxo", "director", "manager"\]\) |
88+
| `job_role` | array | No | Job role categories \(e.g., \["sales", "engineering", "marketing"\]\) |
89+
| `job_sub_role` | array | No | Detailed role categories \(e.g., \["software", "product"\]\) |
90+
| `location` | array | No | Person's location filters \(city/state/country with include/exclude\) |
91+
| `skill` | array | No | Professional skills \(e.g., \["python", "marketing"\]\) |
92+
| `school` | array | No | Educational institutions |
93+
| `major` | array | No | Field of study |
94+
| `linkedin_slug` | array | No | LinkedIn profile slugs |
95+
| `job_company` | array | No | Current company filters \(include/exclude\) |
96+
| `past_company` | array | No | Past company filters |
97+
| `company_location` | array | No | Company HQ location filters |
98+
| `company_industry` | array | No | Company industry filters \(include/exclude\) |
99+
| `company_size` | array | No | Company headcount brackets \(e.g., \["1-10", "11-50", "51-200"\]\) |
100+
| `company_type` | array | No | Company type \(e.g., \["private", "public", "educational"\]\) |
101+
102+
#### Output
103+
104+
| Parameter | Type | Description |
105+
| --------- | ---- | ----------- |
106+
| `total` | number | Total number of matching prospects |
107+
| `profiles` | array | Sample profiles matching the filter criteria |
108+
109+
### `wiza_company_enrichment`
110+
111+
Enrich a company by name, domain, LinkedIn ID, or LinkedIn slug with detailed firmographic data
112+
113+
#### Input
114+
115+
| Parameter | Type | Required | Description |
116+
| --------- | ---- | -------- | ----------- |
117+
| `apiKey` | string | Yes | Wiza API key |
118+
| `company_name` | string | No | Company name \(e.g., "Wiza"\) |
119+
| `company_domain` | string | No | Company domain \(e.g., "wiza.co"\) |
120+
| `company_linkedin_id` | string | No | Company LinkedIn ID |
121+
| `company_linkedin_slug` | string | No | Company LinkedIn slug from the URL |
122+
123+
#### Output
124+
125+
| Parameter | Type | Description |
126+
| --------- | ---- | ----------- |
127+
| `company_name` | string | Company name |
128+
| `company_domain` | string | Company domain |
129+
| `domain` | string | Domain |
130+
| `company_industry` | string | Industry |
131+
| `company_size` | number | Employee count |
132+
| `company_size_range` | string | Headcount range |
133+
| `company_founded` | number | Year founded |
134+
| `company_revenue_range` | string | Revenue range |
135+
| `company_funding` | string | Total funding |
136+
| `company_type` | string | Company type |
137+
| `company_description` | string | Description |
138+
| `company_ticker` | string | Stock ticker |
139+
| `company_last_funding_round` | string | Last funding round |
140+
| `company_last_funding_amount` | string | Last funding amount |
141+
| `company_last_funding_at` | string | Last funding date |
142+
| `company_location` | string | Full location string |
143+
| `company_twitter` | string | Twitter URL |
144+
| `company_facebook` | string | Facebook URL |
145+
| `company_linkedin` | string | LinkedIn URL |
146+
| `company_linkedin_id` | string | LinkedIn ID |
147+
| `company_street` | string | Street address |
148+
| `company_locality` | string | City |
149+
| `company_region` | string | State/region |
150+
| `company_postal_code` | string | Postal code |
151+
| `company_country` | string | Country |
152+
| `credits` | json | Remaining API credits |
153+
154+
### `wiza_start_individual_reveal`
155+
156+
Start an individual reveal to enrich a contact via LinkedIn URL, name+company, or email
157+
158+
#### Input
159+
160+
| Parameter | Type | Required | Description |
161+
| --------- | ---- | -------- | ----------- |
162+
| `apiKey` | string | Yes | Wiza API key |
163+
| `enrichment_level` | string | Yes | Enrichment depth: none, partial, phone, or full |
164+
| `profile_url` | string | No | LinkedIn profile URL \(e.g., https://linkedin.com/in/johndoe\) |
165+
| `full_name` | string | No | Full name \(used with company or domain\) |
166+
| `company` | string | No | Company name \(used with full_name\) |
167+
| `domain` | string | No | Company domain \(used with full_name\) |
168+
| `email` | string | No | Email address \(use alone or with other identifiers\) |
169+
| `accept_work` | boolean | No | Whether to accept work emails \(email_options\) |
170+
| `accept_personal` | boolean | No | Whether to accept personal emails \(email_options\) |
171+
| `callback_url` | string | No | Optional URL to receive a callback with the reveal update |
172+
173+
#### Output
174+
175+
| Parameter | Type | Description |
176+
| --------- | ---- | ----------- |
177+
| `id` | number | Individual reveal ID \(use with Get Individual Reveal\) |
178+
| `status` | string | Reveal status: queued, resolving, finished, or failed |
179+
| `is_complete` | boolean | Whether the reveal has completed |
180+
181+
### `wiza_get_individual_reveal`
182+
183+
Retrieve the status and enriched data for an individual reveal by ID
184+
185+
#### Input
186+
187+
| Parameter | Type | Required | Description |
188+
| --------- | ---- | -------- | ----------- |
189+
| `apiKey` | string | Yes | Wiza API key |
190+
| `id` | string | Yes | Individual reveal ID returned from Start Individual Reveal |
191+
192+
#### Output
193+
194+
| Parameter | Type | Description |
195+
| --------- | ---- | ----------- |
196+
| `id` | number | Reveal ID |
197+
| `status` | string | queued \| resolving \| finished \| failed |
198+
| `is_complete` | boolean | Whether the reveal has completed |
199+
| `name` | string | Full name |
200+
| `company` | string | Company name |
201+
| `enrichment_level` | string | Enrichment level used |
202+
| `linkedin_profile_url` | string | LinkedIn URL |
203+
| `title` | string | Job title |
204+
| `location` | string | Location |
205+
| `email` | string | Primary email |
206+
| `email_type` | string | Email type |
207+
| `email_status` | string | valid \| risky \| unfound |
208+
| `emails` | array | All emails found |
209+
| `mobile_phone` | string | Mobile phone |
210+
| `phone_number` | string | Direct/office phone |
211+
| `phone_status` | string | found \| unfound |
212+
| `phones` | array | All phones found |
213+
| `company_size` | number | Employee count |
214+
| `company_size_range` | string | Headcount range |
215+
| `company_type` | string | Company type |
216+
| `company_domain` | string | Company domain |
217+
| `company_locality` | string | City |
218+
| `company_region` | string | State/region |
219+
| `company_country` | string | Country |
220+
| `company_street` | string | Street |
221+
| `company_postal_code` | string | Postal code |
222+
| `company_founded` | number | Year founded |
223+
| `company_funding` | string | Funding total |
224+
| `company_revenue` | string | Revenue |
225+
| `company_industry` | string | Industry |
226+
| `company_subindustry` | string | Subindustry |
227+
| `company_linkedin` | string | Company LinkedIn URL |
228+
| `company_location` | string | Full company location |
229+
| `company_description` | string | Company description |
230+
| `credits` | json | Remaining credits balance |
231+
232+
### `wiza_get_credits`
233+
234+
Retrieve the remaining credits on your Wiza account
235+
236+
#### Input
237+
238+
| Parameter | Type | Required | Description |
239+
| --------- | ---- | -------- | ----------- |
240+
| `apiKey` | string | Yes | Wiza API key |
241+
242+
#### Output
243+
244+
| Parameter | Type | Description |
245+
| --------- | ---- | ----------- |
246+
| `email_credits` | json | Remaining email credits \(number or "unlimited"\) |
247+
| `phone_credits` | json | Remaining phone credits \(number or "unlimited"\) |
248+
| `export_credits` | number | Remaining export credits |
249+
| `api_credits` | number | Remaining API credits |
250+
251+

apps/sim/app/(landing)/integrations/data/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ import {
197197
WebflowIcon,
198198
WhatsAppIcon,
199199
WikipediaIcon,
200+
WizaIcon,
200201
WordpressIcon,
201202
WorkdayIcon,
202203
xIcon,
@@ -403,6 +404,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
403404
webflow: WebflowIcon,
404405
whatsapp: WhatsAppIcon,
405406
wikipedia: WikipediaIcon,
407+
wiza: WizaIcon,
406408
wordpress: WordpressIcon,
407409
workday: WorkdayIcon,
408410
x: xIcon,

apps/sim/app/(landing)/integrations/data/integrations.json

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5202,7 +5202,7 @@
52025202
},
52035203
{
52045204
"name": "Write to Document",
5205-
"description": "Write or update content in a Google Docs document"
5205+
"description": "Append content to a Google Docs document. Content is inserted literally; Markdown is not interpreted. For formatted output from Markdown, use the Create operation with the markdown toggle enabled."
52065206
},
52075207
{
52085208
"name": "Create Document",
@@ -14212,6 +14212,45 @@
1421214212
"integrationTypes": ["search", "documents"],
1421314213
"tags": ["knowledge-base", "web-scraping"]
1421414214
},
14215+
{
14216+
"type": "wiza",
14217+
"slug": "wiza",
14218+
"name": "Wiza",
14219+
"description": "Find, enrich, and verify B2B contact data with Wiza",
14220+
"longDescription": "Integrates Wiza into the workflow. Search prospects, enrich companies, reveal verified emails and phone numbers for individuals, and check your account credit balance.",
14221+
"bgColor": "#9284BC",
14222+
"iconName": "WizaIcon",
14223+
"docsUrl": "https://docs.sim.ai/tools/wiza",
14224+
"operations": [
14225+
{
14226+
"name": "Prospect Search",
14227+
"description": "Search Wiza"
14228+
},
14229+
{
14230+
"name": "Company Enrichment",
14231+
"description": "Enrich a company by name, domain, LinkedIn ID, or LinkedIn slug with detailed firmographic data"
14232+
},
14233+
{
14234+
"name": "Start Individual Reveal",
14235+
"description": "Start an individual reveal to enrich a contact via LinkedIn URL, name+company, or email"
14236+
},
14237+
{
14238+
"name": "Get Individual Reveal",
14239+
"description": "Retrieve the status and enriched data for an individual reveal by ID"
14240+
},
14241+
{
14242+
"name": "Get Credits",
14243+
"description": "Retrieve the remaining credits on your Wiza account"
14244+
}
14245+
],
14246+
"operationCount": 5,
14247+
"triggers": [],
14248+
"triggerCount": 0,
14249+
"authType": "api-key",
14250+
"category": "tools",
14251+
"integrationTypes": ["sales"],
14252+
"tags": ["enrichment", "sales-engagement"]
14253+
},
1421514254
{
1421614255
"type": "wordpress",
1421714256
"slug": "wordpress",

0 commit comments

Comments
 (0)