Skip to content

Commit 415e175

Browse files
Add quick-lane fast paths to Contact Us; restore Terraform migration option (#20867)
* Add quick-lane fast paths and restore Terraform migration option to Contact Us * Fix heading outline: keep h1 first in DOM, avoid skipped levels, reorder visually with flex * Contact Us: link to trial start, sidebar quick-links, progressive form disclosure - Quick-links change from a full-width banner above the form to a slim side column (max-w-5xl 2fr/1fr grid) so self-serve options don't compete with the primary contact form for attention or submissions. - "Start free" -> "Start a trial" pointing at /signup?create-organization=1 (the trial-provisioning flow used elsewhere on pricing), not the bare /signup used for individual accounts. - Heading changed from "Have a specific question?" to "What can we help you with?" to match the broader intent-routing purpose of the page. - pulumi-multi-select-form no longer defaults to the first form option and pre-renders its embedded HubSpot form. The select starts on a disabled placeholder ("Please select") and the form/CTA area only renders after a real choice, unless a ?form= deep link pre-selects one. Matches the request-field pattern used on the Contact Sales reference and keeps the form from showing every field before a visitor has indicated why they're there. - Updated the component's spec test to the new default (no item pre-selected). * Fix sidebar/form top alignment on Contact Us The form card sits at md:mt-0 with p-10 internal padding, so its heading starts 2.5rem below the grid top. The quick-links sidebar sat at a flat mt-4 (1rem) with no internal padding before its label, so the two columns' content started ~24px apart instead of lining up. Bump the sidebar to md:mt-10 to match the card's effective offset; keep mt-4 for the mobile stacked layout where the two aren't side-by-side. * Trim redundant intro copy under Contact Us heading "Tell us what you need and we'll route you to the right person on our team." restated what the h1 ("What can we help you with?") already says. Drop straight to the dropdown. * Reframe Contact Us heading as "Talk to an expert" Swap the page H1 from "What can we help you with?" to "Talk to an expert" (aligned with the front-matter page title, also updated from "Talk to a human"), following the friendlier expert-framing pattern Cloudflare uses on their own contact page. Move the more conversational "What can we help you with?" phrasing down onto the dropdown label, replacing "Why are you contacting us today?" which read a bit like an interrogation. --------- Co-authored-by: workprentice <257153108+workprentice@users.noreply.github.com>
1 parent 4219df1 commit 415e175

5 files changed

Lines changed: 72 additions & 27 deletions

File tree

content/contact/_index.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
11
---
2-
title: Talk to a human
2+
title: Talk to an expert
33
meta_desc: Contact Pulumi for any general inquiries, including requests for pricing, support, or training.
44
type: page
55
layout: contact
6+
quick_links:
7+
title: Looking for something quicker?
8+
items:
9+
- label: Start a trial
10+
description: No sales call needed. Create an org and ship infrastructure in minutes.
11+
cta_label: Start a trial
12+
url: https://app.pulumi.com/signup?create-organization=1
13+
14+
- label: See it in action
15+
description: Get a guided walkthrough from our team before you commit to anything.
16+
cta_label: Request a demo
17+
url: /request-a-demo/
18+
19+
- label: Already a customer?
20+
description: File a support ticket for a fast response from our team.
21+
cta_label: Get support
22+
url: https://support.pulumi.com/hc/en-us/requests/new
23+
624
form:
725
- key: general
826
label: I have a general question
@@ -11,7 +29,11 @@ form:
1129
- key: sales
1230
label: I want to talk to someone in Sales
1331
hubspot_form_id: 8381e562-5fdf-4736-bb10-86096705e4ee
14-
32+
33+
- key: tf-migration
34+
label: I need help migrating from Terraform
35+
hubspot_form_id: 123cfbdb-9ce4-4d33-a9b7-c30302463d7a
36+
1537
- key: support
1638
label: I need help with Support
1739
hubspot_form_id: cta1

layouts/partials/contact-us.html

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
<section id="contact" class="py-16 px-4 border-b border-gray-300">
2-
<div class="md:max-w-2xl md:mx-auto">
3-
<div class="w-full ">
2+
<div class="max-w-5xl mx-auto grid grid-cols-1 md:grid-cols-[2fr_1fr] gap-8 items-start">
3+
<div class="w-full">
44
<div class="card mt-4 mx-auto md:w-full md:mt-0 p-10 bg-white">
5-
<h1 class="heading-1 mb-6">How can we help you?</h1>
6-
<p class="body-sm text-gray-600 mb-6">Want a guided walkthrough instead? <a href="/request-a-demo/" class="underline">Request a demo</a>.</p>
5+
<h1 class="heading-1 mb-6">Talk to an expert</h1>
76
<div class="w-full">
87
<div class="hs-form hs-form-fg-dark font-normal">
98
<pulumi-contact-us-form
@@ -14,15 +13,36 @@ <h1 class="heading-1 mb-6">How can we help you?</h1>
1413
</div>
1514
</div>
1615
</div>
16+
17+
<div class="mt-16">
18+
<h2 class="font-overline my-6">Our Address</h2>
19+
<p class="m-0">
20+
Pulumi Corporation<br />
21+
601 Union St., Suite 1415<br />
22+
Seattle, WA 98101
23+
</p>
24+
</div>
1725
</div>
1826

19-
<div class="mt-16">
20-
<h2 class="font-overline my-6">Our Address</h2>
21-
<p class="m-0">
22-
Pulumi Corporation<br />
23-
601 Union St., Suite 1415<br />
24-
Seattle, WA 98101
25-
</p>
27+
{{/*
28+
Narrow sidebar of self-serve options for visitors who don't need
29+
a sales conversation. Keep this visually secondary to the form
30+
(a slim side column, never a full-width block above it) so it
31+
doesn't pull volume away from Contact Us submissions.
32+
*/}}
33+
{{ with .Params.quick_links }}
34+
<div class="w-full mt-4 md:mt-10">
35+
<p class="font-overline mb-4">{{ .title }}</p>
36+
<div class="grid grid-cols-1 gap-4">
37+
{{ range .items }}
38+
<a href="{{ .url }}" class="card block p-6 bg-white hover:shadow-lg transition-shadow">
39+
<h2 class="heading-4 mb-1">{{ .label }}</h2>
40+
<p class="body-sm text-gray-600 mb-4">{{ .description }}</p>
41+
<span class="btn btn-secondary btn-sm">{{ .cta_label }}</span>
42+
</a>
43+
{{ end }}
44+
</div>
2645
</div>
46+
{{ end }}
2747
</div>
2848
</section>

theme/stencil/src/components/contact-us-form/contact-us-form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export class ContactUsForm {
6666
items={this.parsedItems}
6767
selectClass={this.selectClass}
6868
labelClass={this.labelClass}
69-
labelText="Why are you contacting us today?"
69+
labelText="What can we help you with?"
7070
defaultFormId={this.defaultFormId}
7171
linkedinConversionId={24927132}
7272
/>

theme/stencil/src/components/pulumi-multi-select-form/pulumi-multi-select-form.tsx

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ export class PulumiMultiSelectForm {
4646
@Prop()
4747
linkedinConversionId?: number;
4848

49-
// The currently selected item.
49+
// The currently selected item. Left undefined until the visitor makes a
50+
// choice (or arrives via a ?form= deep link that pre-selects one), so the
51+
// embedded HubSpot form's extra fields stay hidden until they're relevant.
5052
@State()
51-
selectedItem: MultiSelectFormItem;
53+
selectedItem: MultiSelectFormItem | undefined;
5254

5355
@State()
5456
formSubmitted = false;
@@ -60,13 +62,7 @@ export class PulumiMultiSelectForm {
6062
componentWillLoad() {
6163
if (this.defaultFormId !== "") {
6264
this.selectedItem = this.items.find(item => item.hubspotFormId === this.defaultFormId);
63-
64-
if (this.selectedItem) {
65-
return;
66-
}
6765
}
68-
69-
this.selectedItem = this.items[0];
7066
}
7167

7268
// After the form submits we should hide the session selector.
@@ -98,19 +94,25 @@ export class PulumiMultiSelectForm {
9894
}
9995

10096
// When the select input changes we need to update the state accordingly.
97+
// An empty value means the visitor is back on the unselected placeholder,
98+
// so collapse back to the not-yet-chosen state rather than crashing on a
99+
// missing item.
101100
private handleSelectChange(hubspotFormId: string) {
102-
this.selectedItem = this.items.find(item => item.hubspotFormId === hubspotFormId);
101+
this.selectedItem = hubspotFormId ? this.items.find(item => item.hubspotFormId === hubspotFormId) : undefined;
103102
}
104103

105104
render() {
106-
const selectedFormId = this.selectedItem?.hubspotFormId;
105+
const selectedFormId = this.selectedItem?.hubspotFormId || "";
107106

108107
return (
109108
<div>
110109
{this.formSubmitted ? null : (
111110
<span>
112111
<span class={this.labelClass || ""}>{this.labelText}</span>
113112
<select class={this.selectClass || ""} onInput={(event: any) => this.handleSelectChange(event.target.value)}>
113+
<option value="" selected={!selectedFormId} disabled hidden>
114+
Please select
115+
</option>
114116
{this.items.map(item => {
115117
const isSelected = item.hubspotFormId === selectedFormId;
116118
return (
@@ -122,7 +124,7 @@ export class PulumiMultiSelectForm {
122124
</select>
123125
</span>
124126
)}
125-
{this.selectedItem.cta ? (
127+
{!this.selectedItem ? null : this.selectedItem.cta ? (
126128
<div class="mt-8"><a class="btn btn-secondary" href={this.selectedItem.cta.url}>{this.selectedItem.cta.label}</a></div>
127129
) : (
128130
<pulumi-hubspot-form key={selectedFormId} form-id={selectedFormId}></pulumi-hubspot-form>

theme/stencil/src/components/pulumi-multi-select-form/test/pulumi-multi-select-form.spec.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ describe("pulumi-multi-select-form", () => {
1212
<div>
1313
<span>
1414
<span></span>
15-
<select></select>
15+
<select>
16+
<option disabled hidden selected value="">Please select</option>
17+
</select>
1618
</span>
17-
<pulumi-hubspot-form></pulumi-hubspot-form>
1819
</div>
1920
</pulumi-multi-select-form>
2021
`);

0 commit comments

Comments
 (0)