diff --git a/apps/marketing/content/blog/launch-week-2-day-4.mdx b/apps/marketing/content/blog/launch-week-2-day-4.mdx new file mode 100644 index 000000000..b6f5691fd --- /dev/null +++ b/apps/marketing/content/blog/launch-week-2-day-4.mdx @@ -0,0 +1,63 @@ +--- +title: Launch Week II - Day 4 - Webhooks and Zapier +description: If you want to integrate Documenso without fiddling with the API, we got you as well. You can now integrate Documenso via Zapier, included in all plans! +authorName: 'Timur Ercan' +authorImage: '/blog/blog-author-timur.jpeg' +authorRole: 'Co-Founder' +date: 2024-02-29 +tags: + - Launch Week + - Zapier + - Webhooks +--- + + + +> TLDR; Zapier Integration is now available for all plans. + +## Introducing Zapier for Documenso + +Day 4 ๐Ÿฅณ Yesterday we introduced our [public API](https://documen.so/day3) for developers to build on Documenso. If you are not a developer or simple want a quicker integration this is for you: Documenso now support Zapier Integrations! Just connect your Documenso account via a simple login flow with Zapier and you will have access to Zapier's universe of integrations ๐Ÿ’ซ The integration currently supports: + +- Document Created ([https://documen.so/zapier-created](https://documen.so/zapier-created)) +- Document Sent ([Chttps://documen.so/zapier-sent](https://documen.so/zapier-sent)) +- Document Opened ([https://documen.so/zapier-opened](https://documen.so/zapier-opened)) +- Document Signed ([https://documen.so/zapier-signed](https://documen.so/zapier-signed)) +- Document Completed ([https://documen.so/zapier-completed](https://documen.so/zapier-completed)) + +> โšก๏ธ You can create your own Zaps here: https://zapier.com/apps/documenso/integrations + +Each event comes with extensive meta-data for you to use in Zapier. Missing something? Reach out on [Twitter / X](https://twitter.com/eltimuro) (DM open) or [Discord](https://documen.so/discord). We're always here and would love to hear from you :) + +## Also Introducing for Documenso: Webhooks + +To build the Zapier Integration, we needed a good webhooks concept, so we added that as well. Together with your Zaps, you can also now create customer webhooks in Documenso. You can try webhooks here for free: [https://documen.so/webhooks](https://documen.so/webhooks) + +
+ + +
+ Create unlimited custom webhooks with each plan. +
+
+ +## Pricing + +Just like the API, we consider the Zapier integration and webhooks part of the open Documenso platform. Zapier is **available for all Documenso plans**, including free! [Login now](https://documen.so/login) to check it out. + +> ๐Ÿšจ We need you help to help us to make this the biggest launch week yet: Support us on Twitter or anywhere to spread awareness for open signing! The best posts will receive merch codes ๐Ÿ‘€ + +Best from Hamburg\ +Timur diff --git a/apps/marketing/content/blog/launch-week-2-day-5.mdx b/apps/marketing/content/blog/launch-week-2-day-5.mdx new file mode 100644 index 000000000..04d639206 --- /dev/null +++ b/apps/marketing/content/blog/launch-week-2-day-5.mdx @@ -0,0 +1,61 @@ +--- +title: Launch Week II - Day 5 - Documenso Profiles +description: Documenso profiles allow you to send signing links to people so they can sign anytime and see who you are. Documenso Profile Usernames can be claimed starting today. Long ones free, short ones paid. Profiles will launch as soon as they are shiny. +authorName: 'Timur Ercan' +authorImage: '/blog/blog-author-timur.jpeg' +authorRole: 'Co-Founder' +date: 2024-03-01 +tags: + - Launch Week + - Profiles +--- + + + +> TLDR; Documenso profiles allow you to send signing links to people so they can sign anytime and see who you are. Documenso Profile Usernames can be claimed starting today. Long ones free, short ones paid. Profiles launch as soon as they are shiny. + +## Introducing Documenso Profile Links + +Day 5 - The Finale ๐Ÿ”ฅ + +Signing documents has always been between humans, and signing something together should be as frictionless as possible. It should also be async, so you don't force your counterpart to jog to their device to send something when you are ready. Today we are announcing the new Documenso Profiles: + +
+ + +
+ Async > Sync: Add public templates to your Documenso Link and let people sign whenever they are ready. +
+
+ +Documenso profiles work with your existing templates. You can just add them to your public profile to let everyone with your link sign them. With profiles, we want to bring back the human aspect of signing. + +By making profiles public, you can always access what your counterparty offers and make them more visible in the process. Long-term, we plan to add more to profiles to help you ensure the person you are dealing with is who they claim to be. Documenso wants to be the trust layer of the internet, and we want to start at the very fundamental level: The individual transaction. + +Profiles are our first step towards bringing more trust into everything, simply by making the use of signing more frictionless. As there is more and more content of questionable origin out there, we want to support you in making it clear what you send out and what not. + +## Pricing and Claiming + +Documenso profile username can be claimed starting today. Documenso profiles will launch as soon as we are happy with the details โœจ + +- Long usernames (6 characters or more) come free with every account, e.g. **documenso.com/u/timurercan** +- Short usernames (5 characters or fewer) or less require any paid account ([Early Adopter](https://documen.so/claim-early-adopters-plan), [Teams](https://documen.so/teams) or Enterprise): **e.g., documenso.com/u/timur** + +You can claim your username here: [https://documen.so/claim](https://documen.so/claim) + +> ๐Ÿšจ We need you help to help us to make this the biggest launch week yet: Support us on Twitter or anywhere to spread awareness for open signing! The best posts will receive merch codes ๐Ÿ‘€ + +Best from Hamburg\ +Timur diff --git a/apps/marketing/public/blog/hooks.png b/apps/marketing/public/blog/hooks.png new file mode 100644 index 000000000..9c324db0b Binary files /dev/null and b/apps/marketing/public/blog/hooks.png differ diff --git a/apps/marketing/public/blog/profile.png b/apps/marketing/public/blog/profile.png new file mode 100644 index 000000000..b216e9758 Binary files /dev/null and b/apps/marketing/public/blog/profile.png differ diff --git a/apps/marketing/src/app/(marketing)/layout.tsx b/apps/marketing/src/app/(marketing)/layout.tsx index dd1a46418..c5f761853 100644 --- a/apps/marketing/src/app/(marketing)/layout.tsx +++ b/apps/marketing/src/app/(marketing)/layout.tsx @@ -2,8 +2,12 @@ import React, { useEffect, useState } from 'react'; +import Image from 'next/image'; import { usePathname } from 'next/navigation'; +import launchWeekTwoImage from '@documenso/assets/images/background-lw-2.png'; +import { useFeatureFlags } from '@documenso/lib/client-only/providers/feature-flag'; +import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app'; import { cn } from '@documenso/ui/lib/utils'; import { Footer } from '~/components/(marketing)/footer'; @@ -17,6 +21,10 @@ export default function MarketingLayout({ children }: MarketingLayoutProps) { const [scrollY, setScrollY] = useState(0); const pathname = usePathname(); + const { getFlag } = useFeatureFlags(); + + const showProfilesAnnouncementBar = getFlag('marketing_profiles_announcement_bar'); + useEffect(() => { const onScroll = () => { setScrollY(window.scrollY); @@ -38,6 +46,31 @@ export default function MarketingLayout({ children }: MarketingLayoutProps) { 'bg-background/50 backdrop-blur-md': scrollY > 5, })} > + {showProfilesAnnouncementBar && ( +
+
+ Launch Week 2 +
+ +
+ Claim your documenso public profile username now!{' '} + documenso.com/u/yourname +
+ + Claim Now + +
+
+
+ )} +
diff --git a/apps/marketing/src/app/(marketing)/singleplayer/[token]/success/page.tsx b/apps/marketing/src/app/(marketing)/singleplayer/[token]/success/page.tsx index fbf020c38..51fbaff36 100644 --- a/apps/marketing/src/app/(marketing)/singleplayer/[token]/success/page.tsx +++ b/apps/marketing/src/app/(marketing)/singleplayer/[token]/success/page.tsx @@ -27,7 +27,7 @@ export default async function SinglePlayerModeSuccessPage({ return notFound(); } - const signatures = await getRecipientSignatures({ recipientId: document.Recipient.id }); + const signatures = await getRecipientSignatures({ recipientId: document.Recipient[0].id }); return ; } diff --git a/apps/marketing/src/app/(marketing)/singleplayer/client.tsx b/apps/marketing/src/app/(marketing)/singleplayer/client.tsx index 9f1ebb289..4c1162599 100644 --- a/apps/marketing/src/app/(marketing)/singleplayer/client.tsx +++ b/apps/marketing/src/app/(marketing)/singleplayer/client.tsx @@ -191,7 +191,7 @@ export const SinglePlayerClient = () => {

Create a{' '} diff --git a/apps/marketing/src/components/(marketing)/callout.tsx b/apps/marketing/src/components/(marketing)/callout.tsx index 72ae3907b..990aa163b 100644 --- a/apps/marketing/src/components/(marketing)/callout.tsx +++ b/apps/marketing/src/components/(marketing)/callout.tsx @@ -40,9 +40,9 @@ export const Callout = ({ starCount }: CalloutProps) => { className="rounded-full bg-transparent backdrop-blur-sm" onClick={onSignUpClick} > - Get the Early Adopters Plan - - $30/mo. forever! + Claim Community Plan + + $30/mo diff --git a/apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx b/apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx index ee123d7ad..b80b2fe8c 100644 --- a/apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx +++ b/apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx @@ -1,4 +1,4 @@ -import { HTMLAttributes } from 'react'; +import type { HTMLAttributes } from 'react'; import Image from 'next/image'; diff --git a/apps/marketing/src/components/(marketing)/header.tsx b/apps/marketing/src/components/(marketing)/header.tsx index e1813f7f6..915c13852 100644 --- a/apps/marketing/src/components/(marketing)/header.tsx +++ b/apps/marketing/src/components/(marketing)/header.tsx @@ -9,6 +9,7 @@ import Link from 'next/link'; import LogoImage from '@documenso/assets/logo.png'; import { useFeatureFlags } from '@documenso/lib/client-only/providers/feature-flag'; import { cn } from '@documenso/ui/lib/utils'; +import { Button } from '@documenso/ui/primitives/button'; import { HamburgerMenu } from './mobile-hamburger'; import { MobileNavigation } from './mobile-navigation'; @@ -68,12 +69,18 @@ export const Header = ({ className, ...props }: HeaderProps) => { Sign in + + { className="rounded-full bg-transparent backdrop-blur-sm" onClick={onSignUpClick} > - Get the Early Adopters Plan - - $30/mo. forever! + Claim Community Plan + + $30/mo @@ -224,8 +225,7 @@ export const Hero = ({ className, ...props }: HeroProps) => { (in a non-legally binding, but heartfelt way) {' '} - and lock in the early supporter plan for forever, including everything we build this - year. + and lock in the community plan for forever, including everything we build this year.

diff --git a/apps/marketing/src/components/(marketing)/mobile-navigation.tsx b/apps/marketing/src/components/(marketing)/mobile-navigation.tsx index 982e2967a..434b30053 100644 --- a/apps/marketing/src/components/(marketing)/mobile-navigation.tsx +++ b/apps/marketing/src/components/(marketing)/mobile-navigation.tsx @@ -47,9 +47,13 @@ export const MENU_NAVIGATION_LINKS = [ text: 'Privacy', }, { - href: 'https://app.documenso.com/signin', + href: 'https://app.documenso.com/signin?utm_source=marketing-header', text: 'Sign in', }, + { + href: 'https://app.documenso.com/signup?utm_source=marketing-header', + text: 'Sign up', + }, ]; export const MobileNavigation = ({ isMenuOpen, onMenuOpenChange }: MobileNavigationProps) => { diff --git a/apps/marketing/src/components/(marketing)/pricing-table.tsx b/apps/marketing/src/components/(marketing)/pricing-table.tsx index 748f7307f..ab35bcc90 100644 --- a/apps/marketing/src/components/(marketing)/pricing-table.tsx +++ b/apps/marketing/src/components/(marketing)/pricing-table.tsx @@ -83,7 +83,11 @@ export const PricingTable = ({ className, ...props }: PricingTableProps) => {

@@ -114,7 +118,10 @@ export const PricingTable = ({ className, ...props }: PricingTableProps) => {

diff --git a/apps/marketing/src/components/(marketing)/single-player-mode/single-player-mode-success.tsx b/apps/marketing/src/components/(marketing)/single-player-mode/single-player-mode-success.tsx index d8a8e2c53..85edf2594 100644 --- a/apps/marketing/src/components/(marketing)/single-player-mode/single-player-mode-success.tsx +++ b/apps/marketing/src/components/(marketing)/single-player-mode/single-player-mode-success.tsx @@ -55,7 +55,7 @@ export const SinglePlayerModeSuccess = ({ @@ -65,7 +65,7 @@ export const SinglePlayerModeSuccess = ({
@@ -86,7 +86,7 @@ export const SinglePlayerModeSuccess = ({

Create a{' '} diff --git a/apps/marketing/src/components/(marketing)/widget.tsx b/apps/marketing/src/components/(marketing)/widget.tsx index fe7502d27..15e3fbdeb 100644 --- a/apps/marketing/src/components/(marketing)/widget.tsx +++ b/apps/marketing/src/components/(marketing)/widget.tsx @@ -199,7 +199,7 @@ export const Widget = ({ className, children, ...props }: WidgetProps) => { className="bg-foreground/5 col-span-12 flex flex-col rounded-2xl p-6 lg:col-span-5" onSubmit={handleSubmit(onFormSubmit)} > -

Sign up for the early adopters plan

+

Sign up to Community Plan

with Timur Ercan & Lucas Smith from Documenso

@@ -208,7 +208,7 @@ export const Widget = ({ className, children, ...props }: WidgetProps) => { -