As you mentioned, when designing flat buttons you need to keep an eye on a couple of things. The first one being, I'd say: Does it look like a button?
This is not necessarily something that depends only on the button, but on the rest of the elements of your UI. If you are using flat buttons, I'd suggest you avoid similar shapes/styles everywhere else. You need to maintain a visual vocabulary so people can instantly recognize these elements as buttons and not something else.
Shadows are good for this, because they give an impression of volume. Therefore, they are easier to see. Plus, we are used to buttons having that effect. I would however consider using a color that is similar to the button's color. For example, instead of using black for the red button, use a red with 50% opacity. Another option to make buttons more obvious is to add an icon (white, solid).
I'd be very careful with gradients. Not because they are bad, but because in the current super simple flat trend, they don't fit that well. Especially if the colors or shades you use are very different. A small gradient can look really nice, but it has to be tiny, barely noticeable.
In short, I like the way they look. I would only change the shadow color to something lighter, and maybe make the foreground text lighter too, white probably. The font is nice and you are using good padding, so nice job! I see you are using them in the site, but below them you have a set of notifications in pastel colors that actually look a bit similar. I'd reconsider their style, as they can be a bit confusing, and I'd try to use the same colors throughout the site (all pastels, or all contrast).