Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Contact Form Delivery (sendfly.io)
118 points by stanmancan on Oct 22, 2022 | hide | past | favorite | 81 comments
Most sites I work on have at least one contact form and I got tired of building out the logic to send them and handle the spam into every project.

I built and launched Sendfly for myself 5 years ago and it's been a rock solid service that I've relied on ever since.

Recently I've done a full re-write, simplifying the product and making it super affordable. I wanted to share it here in case it comes in handy for someone else.

There are lots of competitors out there but I found them too expensive for my needs. For $15/year you get unlimited forms and 5,000 form submissions every year. Hoping that fits the bill for developers like me!




This must be the most pragmatic "to-the-point" landing page I have ever seen. Logo, CTA button, value prop, sample code that explains the whole thing in a simple way, pricing, contact-us _à la_ eat your own dog food. Amazing.


I think it goes a bit too far that way. Some minimum info I'd want to have before buying would be:

1) How do I consult the data that's submitted through the form?

2) What is the privacy policy: what's going to happen to my clients' data? Where are the servers hosted?


I happened to need exactly this and was putting off coding it up myself. Signed up and was testing a live set-up within minutes. Very nice!


Did you buy tho?


Why is this downvoted? Is the goal to rub your ego or get sales from your LP


Lovely implementation.

There are a few of these about, having started playing around with making websites in the late 90s I have fond memory’s of “Matt’s Script Archive”. He had both a Perl CGI script for this and a separate paid hosted version. Just checked, and it’s still running 25 years later! https://www.formmail.com/

Looks like you are going for roughly the same price point as that old classic.

http://www.scriptarchive.com/


Good old formmail! Takes me back to my middle school web master days. I spent a lot of time in frontpage and invested much time in figuring out how to make my own custom animated gifs.


Matt's Script Archive was a great source of inspiration when I was writing Perl CGI scripts, back in the day.

So much terrible code, and security holes, but still the name gives me a nostalgic feeling rather than the memories of all the times things failed horribly!


Personally I dislike using contact forms. If the email address is shown I’ll just use that. Some people say you’ll get spammed that way but that hasn’t been my experience. These days unless a client specifically requests a form I will use a simple mailto: link and avoid the hassle.


I find myself reaching for both depending on the situation. I usually prefer to list an email address instead of a generic "Send us a message" form but there are lots of times when I (or a client) wants to collect specific information; in those cases contact forms are great.


As a consumer, I also usually prefer an email address, because then I have a record of what I sent, when. This is helpful if I am sending similar messages to a few companies, seeking a quote (eg for some work on my home). I can look back and be sure that I haven't gotten a reply from a company because they never responded, rather than because I never contacted them.


For a client I used a free WordPress plugin WP Forms [1], for free you can create unlimited forms, receive unlimited messages, build forms with a nice UI [2] and you own all the data/don't call third party services. Recommended.

Yes, it works only on WordPress, in my use case, my client had a non-WordPress site, and we make a Help site on help.domain.com with WordPress, and the contact form on help.domain.com/contact.

[1] https://wordpress.org/plugins/wpforms-lite/

[2] https://youtu.be/H5t3Zkx8ccc


The issue with forms is twofold.

The first is the UI - the design, logic, etc. Any reasonable form builder will give you this.

The bigger issue is the deliverability aspect. This to me is the killer. Having to setup all the stuff around email deliverability is a horror - SPF, DKIM, DMARC - then monitor. It's awful, and it's especially awful if you're doing it on behalf of multiple clients.


I'd assume the WP plugin would take advantage of direct access to the DB. Show all the form submissions in the admin and let the site owner reply directly with their email.

no neef for any emails in the plugin directly - unless you'd want to


Some hosts will require that you also install an SMTP plugin and use a 3rd party service like Sendgrid or Mailgun to authenticate and send the messages. If you have a professional web developer to help, this is usually fine, but if you don't, then this step will often times stop people in their tracks.


Many Wordpress plugins have lite and paid versions - and often do a bad job around spam etc


Spam is largely solved because they all integrate with Akismet. I have a WP site that gets 500k monthly pageviews and Akismet catches all our spam


I'm not sure what specifically you're selling me here. Is it a form that looks like your 'Get in touch' form at the bottom? How do I customize it (if i'm not a coder)? How do you handle spam/bots? How does it send it to me? via email? fills a spreadsheet?

> Includes every feature we offer plus unlimited forms and 5,000 form submissions a year

What are the other features?


You’d need to some some basic HTML to use it. You can add whatever fields you want to the form and post it to our endpoint like in the example.

We have some built in spam protection; a secondary confirmation after the forms submitted.

The form gets emailed to you but you can also view it on your account.

Tons of great questions; I’ll look at adding a FAQ to the landing page to give a bit more detail!


My [further] advice is to not bury key elements of your product in a FAQ, but find a way to communicate it through your marketing copy.


I like it. It's simple enough to add to a form from a template, and doesn't get in the way.

2 things I would like:

- customize (translate, actually) the "I am not a robot" text, since I do work for non-English customers,

- have the "redirection" be just a pop-up window. My use case for Sendfly would be for 1 page brochure sites, and I'd very much like those sites to really be 1 page. Maintaining 2 pages is a lot more work than a single one, especially if I update them very, very infrequently.

I may end up using it as is, it would improve some of those sites anyway.


Hey I think I’m in your target market for this, I like to test ideas with landing pages and provide a contact form. All I really want is the ability to email myself the info from the form. In the past I’ve set up free ConvertKit or MailChimp accounts, but it’s kind of a pain and way overkill.

Anyway, when I’m on your landing page I have 3 questions:

1. What happens when the user submits the form, how do I access the data / know about new submissions?

2. Am I able to customize the fields?

3. What happens if I go over 5000 submissions?


Awesome feedback; thanks. I'll work on updating the landing page to answer those questions, but for the time being.

1. What happens when the user submits the form, how do I access the data / know about new submissions?

When you setup a form you tell us who you'd like the form emailed to. When the forms submitted, we'll email that address the contents.

2. Am I able to customize the fields?

Absolutely! You're in full control of the form itself; what fields are there, how it's styled, where it's hosted. All you need to do is set the forms action to your sendfly.io url so that when the form is submitted it gets posted to us.

3. What happens if I go over 5000 submissions?

I haven't quite figured out that path yet; right now you'll just keep getting the submissions. I'll work on adding different plans, but wanted to keep it simple at launch. If you're interested and know you'll need more than 5,000 submissions let me know and we can work something out!


I suggest the following if the user hits 5000 submissions:

Define the 5000 as a soft limit. Define something like 10,000 or "100 days after reaching the soft limit" as a hard limit.

When a user hits soft limit, you keep storing their submissions, but you don't let them see it unless they upgrade the subscription/buy more resources (Mailchimp's Blocks pricing strategy seems sensible to me). When a submission is received after hitting soft limit, you send your user an email telling them that they received a form submission, but they cant view it till they upgrade. (You keep notifying them). You can aggregate those notifications daily/weekly after the first few to reduce costs.

When the hard limit is reached, you stop storing those entries. And send the user 1 email telling him that you changed behaviour.


This is a fine idea, but be _VERY_ upfront about it, if it comes as a surprise, even though it's entirely reasonable, a lot of people will be angry and put off because they feel they've "been had" if they weren't aware of it when they got into it.


Great idea. This is actually already what we do for unsubscribed users. You get a notification that your form received a submission and a link to subscribe if you’d like to see it.

I’lol need to add some additional plans to support higher volume if and have an upgrade option.


Or, just use the 5,000 as a soft limit and lead list. Once a client goes over, reach out with an upgrade offer.


Oh I remember this. I used a service like this 20 years ago when I started programming and didn't know how to host dynamic content (only static HTML). Back then they were free, called form2mail or similar, and worked exactly the same way.

Throws me back. I'm sure people these days will need it too, with all those static sites out there.


I was just searching for a contact form last spring and was researching this area.

My Wordpress site is for a non-profit, and I am volunteer, but they were willing to give some cash for it. In the end, I went with Contact7, a free Wordpress Plugin and Flamingo (another plugin) that lets you export the data that people enter into the forms, as an excel file.

My use case was that we wanted to have people register, and we knew we would only have 10 people register, per year! So immediately, paying a fee for this was not really worth it since the volume is not there, and my client said there were happy not paying, and just making the people print a PDF to email back. I said let's just do these as forms.

As for feedback, I echo what some people said about adding what happens to the information once it's submitted, and can it be exported into a friendly CSV. Even for someone like me that only had 10 entries, it was helpful. If you are hitting 100s and 1000s, you definitely want to track all of that.

You should also have a look at the pricing of WPForms (https://wpforms.com/pricing/), which is a paid Wordpress Plugin, obviously with a crazy amount of features, but it's still good to look at them to see how they differentiate.

In addition, is your $15 just for one site, or can I use your service on say, 2 sites if I run 2 (or more). I would add that to the front page.


Good feedback, thanks. I think an export feature is helpful.

I'll be working on making it more clear, but form submissions get forwarded to the email specified on the form. So if you're putting the form on your sales page, you could forward it to sales@your-domain.com. All submissions are also viewable on sandfly.io.

$15/year for unlimited forms and 5,000 submissions, so you can have as many forms on as many sites as you'd like!


One of many, existed since at least 2013. The most popular one went bust since it was free and many more were born, bought and died since.

It’s good to keep seeing alternatives though since the lifespan of such services isn’t very long.

I myself ended up making my own version on AWS Lambda and SES and that worked well for 7 years without a change. This pattern is so common I think an example lives on AWS’ own help site.


You have a typo in your own contact form, “hestiate” should be “hesitate” :)


Appreciate that; fixed!


I love this. Simple and to the point.

You can have free tier of 100 submissions a month which will let people have a taste of service before they are ready to buy. Suggestions about soft limit can applied here to drive more people to convert to paid plan.

Also can add a premium plan which remove the backlink.


> $15... 5,000 form submissions a year.

Do you account for spam detection and bots that would exceed that quota?


Yes it only counts submissions that make it past the spam protection


This is why I like Wordpress, stuff like this is a simple plugin install away. Caching, analytics, forms, membership sites etc. can all be set up as free plugins (you can pay for more advanced features though).


I do think that over time, my WordPress sites saved me a lot of time compared to the custom-built ones. On my custom sites I use a similar service to sendfly: https://web3forms.com/

PS: I emailed you regarding WordPress and https://wplytic.com, I hope it's ok.


Installed it! Looks impressive, cant wait for some real numbers to pipe through.


I made https://web3forms.com/ which solves the same problem. No signup needed. It just works.

Good luck with yours.


I find the pricing a bit odd.

5,000 submissions is not an amount where I would consider paying, but at the same time it's also 13 contacts a day which isn't nothing for sure.

Basically not enough to pay for but still not insignificant.

The total cost for you is $0.05 a month if you use AWS SES, so I think a limit of 20 or 50K a year will basically not change the cost for you but will make the pricing more "coherent".


Keep in mind it’s $15/year, so only that’s only $1.25/m.

Realistically I can probably raise the limits since most people won’t come close to using the 5,000 a year. I don’t use SES and my email provider is a lot more expensive expensive ($1.25-0.85/1000 depending on volume) but I’ve had zero deliverability issues with them so I’m happy to pay a bit more.


Congrats on the launch, at some point I too considered building something like this but after a quick research I realized there is a very popular free service and a freemium service which does exactly the same.

I genuinely want to know from you (and others) whats the motivation to build something like this which already exists, which doesn't have a unique feature either.


Honestly? It’s usually just for fun and a learning experience. When I first built Sendfly in 2017 I had a need for it, didn’t see any options I liked, and built it in a weekend. This time around I’m learning Elixir/Phoenix and re-wrote Sendfly as a learning experience. I’m going to run it anyways so why not share it with the word and see who else finds it useful?

Any of my limited success in life has come from my willingness to build things that already exist. The fact that competitors exist is a good thing; it means there’s already a market for the product. You just need to capture a small slice of an existing market to make a bit of money.


Thanks for sharing your insights.

> Any of my limited success in life has come from my willingness to build things that already exist... ...You just need to capture a small slice of an existing market to make a bit of money.

That is an incredible piece of advice. I often get disappointed or lose the motivation to keep building something that already exists. So reading this really helps knowing its not silly to feel that way but you have to go past it and be willing to create it despite knowing its not unique.

Thanks OP.


Yes exactly! I have another side project that had multiple competitors when I built it. I wanted to learn, had a need for it myself, and shared it for fun because why not. Its a decade only now, requires zero maintenance, and brings in about $30k ARR (2/3 of it is ad revenue, 1/3 is subscriptions) and costs $40/m to run. I definitely got lucky in terms of its limited success, but I couldn’t have gotten lucky if I wasn’t willing to try.

Just keep building.


A possible nice feature you could add for your customers is an "email copy to sender" option.

Reason: One major annoyance I had on the website of a letting agency was that they had a form where you could post issues with the home you were renting. But then you'd get no confirmation email of (1) the fact that you posted a message and (2) the content of your message.


Not OP, but while that sounds like an easy feature to add, suddenly the form might me used to spam, flood or otherwise annoy other email addresses.


There’s lots of opportunities to induce a service to send an email to an arbitrary address — e.g: I sign up for a LinkedIn account with your email address — so there’s a few common patterns that could be used.

For example, the first time an email address is seen by the service as a “send me a copy” address, the service could first send a confirmation email (much like a “did you register for a LinkedIn account?” confirmation email) before sending a copy of the message.

Framed as a feature (i.e: subscribe to receive a copy of any message sent from your address) it could be quite compelling! I’d love to know what people are claiming I sent via message forms (how valuable it would be, I don’t know, but it’s certainly something I’d sign up for).


This would be a great feature but I’d have to think through the implementation. Right now we have no way to know which field to use as a “reply to”. I van look into documenting a set of special field names that have additional functionality.


I had this idea back in 2014 but because I'm a coder, not a business guy I just sort of moved on despite it being a little popular for a while. https://adamgrant.me/development/mailtoninja


The only anti-bot thing I see is the confirmation after you submit a form, which seems to be just clicking a button. Having run some ecom sites with contact forms before, I'm skeptical that's enough. Do you have some plans to improve the anti-bot measures?


I'll be keeping an eye on it for sure and adding additional protection features as necessary.


That's fantastic.

I think this is a prime example of what a startup should do:

* Focus on solving an obvious problem, not adding features * Communicate the obvious problem you solve * Charge for solving that problem

Much better than all the input-driven & abstract value propositions I see out there.


A while back a similar project launched, one of their competitors mentioned there is virtually no one willing to pay for this. So I wonder if you thought about this, it might require some solid marketing to keep alive. Good luck to you!


Yeah! I’m not actually in it for the money or I wouldn’t have made it so cheap, haha. This is something I built for myself in 2017, have found it immensely useful, so decided to share it. I’m going to run it anyways so may as well see if anyone else in the world has a use for it.


This has a very straightforward and straight-to-the-point proposition: Forms for your website for $15/year. No pricing page, just a single, simple offer. I much prefer this [with priced addons when you have them] than the usual multi-offer pages where much time [I assume] is spent trying to make a decision on which one is the right offer.

Also, it might be helpful to have a video showing how to set it up as the source code screenshot seems overly targeted to developers.

Finally, your page still says 2017... It may make sense to use a script like this instead:

<p>Copyright &copy; 2017 — <script type="text/javascript">var dt = new Date(); var d = dt.getFullYear(); document.write(d);</script> Nivel Technologies Ltd. All rights reserved.</p>

This way, you don't have to keep manually updating your web pages once a year.


> This way, you don't have to keep manually updating your web pages once a year.

Don’t do this. The copyright year is not there to show people the current year. What would the point of that be? Everybody knows what year it is.

The copyright year is to show you when the work was created. If you automatically set it to the current year, you are essentially lying to add more years onto the copyright term than you are supposed to get by law. Using the wrong year renders the copyright notice invalid in the USA. It’s still copyrighted, but the notice is worthless.

Also “All rights reserved” is legally meaningless everywhere. Every country that signed the treaty that gave it meaning has since signed a later treaty that superseded it.


I would also say there's barely any point adding the date at all anymore in most computing cases. In the very unlikely event that you need to prove the date in court you're probably going to be relying on archive.org and git logs anyway, and nobody is going to claim that it's over 75 years old or whatever.


Would be nice to see the email that's delivered for that example code.


I'll get that added to the homepage, thanks! For the time being; it's a simple text based email with the field names and submitted values that would look something like this:

  1. Name
  John Doe
  
  2. E-mail
  john@doe.co
  
  3. Message
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.


What tools/services did you use to monetize the product?

Also, I found you have no "about" or "contact" section with information about you, which is kind of standard so I was surprised.


I just used Stripes hosted checkout/management portals to make life easier.

There’s a contact form if needed and when you’re logged in there’s a support link that’s just a mailto me. I’m a relatively private person so an about page isn’t really my thing.


> What's the best thing about Switzerland? I don't know, but the flag is a big plus. Lorem ipsum dolor sit amet consectetur adipisicing elit. Quas cupiditate laboriosam fugiat.


Isn't there a possibility that someone on internet can waste my quota because that url is visible to him?

Or its like your checking the domain of the referar in backend?


There is some spam protection build in and we only count delivered submissions. If you have any issue’s definitely reach out and we’ll remove any spam that gets through.


I don't think you're quite answering the question they've asked.

They want to know if you're doing any domain validation for requests sent to your URL, otherwise someone could quite easily eat up their quota by sending POST requests to the URL in the form.


I just want to make sure I'm not missing something:

Would there be a reason to do this other than to eat a competitor's quota or just cause someone trouble?

The malicious actor would not benefit in any other way, correct? They would not actually get the submitted data…


Maybe not from a single spammer, but there are so many spam bots that any form like this you put on the web will be hit by a flood of bots


Agreed.

It’s taken me a couple days to put it into words, but the important thing for me was a product lesson.

The lesson was that it’s possible to lower friction to this point, build or buy an anti/bot/spam system and still have margin.


Yeah there would be absolutely no benefit to doing this other than just to be a nuisance.


Nope, there would be zero benefit other than to try to cause a bit of trouble.


There's no domain validation as we don't limit what domain or page your form can be used on.

If there was a malicious user abusing the service and they manage to bypass our spam protection then I'll definitely make sure they're taken are of as spam doesn't count towards your quota.


No way to stop that, bar a annoying captcha detector maybe.

Because you can control the whole http request using say curl and use proxies.

Conversely I wouldn’t be surprised if some privacy extensions hide the referrer.

You could do some basic bot detection though. Even a css hidden non-hidden field might catch the bots.


Will this accept spam and forward it to me, or will it filter spam, and if so, how?


It should filter it out but will be a work in progress if I notice some is getting through.


Why would anyone pay for this when free forms like Contact7 are letting people do t he same for free?


Good question! Contact7 looks like a Wordpress Plugin? Sendfly works anywhere you can write HTML and puts you in control. You get to build and style your form as you wish and Sendfly just delivers it for you.


Sometimes Contact7 won't work because of the restrictions posed by the hosting company where you run your Wordpress installation. For that Contact7 has a companion plugin called Flamingo which stores data sent from forms locally to WP's database, which is then accessible via the admin panel.


Static sites comes to mind.


And sometimes you just don’t want to add the functionality into a dynamic site. Contact forms are simple but you have to find an email provider, add the functionality to the site, and it’s an extra thing to maintain moving forward. I have been using Sendfly for my customers contact forms for the last 5 years because it’s so much easier to implement and way more reliable.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: